Micron Document
C.S.Burner 🪙 ━►🔥GIT Node


Displaying Raw • Download

meshchatx/src/frontend/components/micron-editor/MicronEditorPage.vue 65ca9ddc823fcc2c8f8653c553b944b85db0875f (65ca9ddc) Text, 44.84 KB

Ta5d6ff<!-- SPDX-License-Identifier: 0BSD -->

Ta5d6ff<template>
Ta5d6ff<div class="flex flex-col flex-1 overflow-hidden min-w-0 bg-slate-50 dark:bg-zinc-950">
Ta5d6ff<ToolsPageHeader
icon="code-tags"
:title="$t('tools.micron_editor.title')"
:description="$t('tools.micron_editor.description')"
accent="teal"
>
<template #actions>
Ta5d6ff<button
type="button"
class="secondary-chip py-1! px-3! text-red-500! hover:bg-red-50! dark:hover:bg-red-900/20!"
@click="resetAll"
>
<MaterialDesignIcon icon-name="refresh" class="w-3.5 h-3.5" />
Ta5d6ff<span class="hidden sm:inline">{{ Te6edf3$t(Ta5d6ff"tools.micron_editor.reset") }}Ta5d6ff</span>
Ta5d6ff</button>
Ta5d6ff<button type="button" class="secondary-chip py-1! px-3!" @click="downloadFile">
Ta5d6ff<MaterialDesignIcon icon-name="download" class="w-3.5 h-3.5" />
Ta5d6ff<span class="hidden sm:inline">{{ Te6edf3$t(Ta5d6ff"tools.micron_editor.save") }}Ta5d6ff</span>
Ta5d6ff</button>
Ta5d6ff<div class="relative">
Ta5d6ff<button type="button" class="primary-chip py-1! px-3!" @click="togglePublishMenu">
Ta5d6ff<MaterialDesignIcon icon-name="publish" class="w-3.5 h-3.5" />
Ta5d6ff<span class="hidden sm:inline">Te6edf3PublishTa5d6ff</span>
Ta5d6ff</button>
Ta5d6ff<div
v-if="showPublishMenu"
v-click-outside="() => (Te6edf3showPublishMenu = Te6edf3false)Ta5d6ff"
class="Tffa657absolute Te6edf3right-0 Te6edf3top-full Te6edf3mt-1 Te6edf3w-64 Te6edf3bg-white Te6edf3dark:bg-zinc-800 Te6edf3rounded-xl Te6edf3shadow-xl Te6edf3border Te6edf3border-gray-200 Te6edf3dark:border-zinc-700 Te6edf3z-50 Te6edf3py-2Ta5d6ff"
>
<div
class="Te6edf3px-3 Te6edf3py-1T79c0ff.5 Te6edf3text-xs Te6edf3font-bold Te6edf3uppercase Te6edf3tracking-wider Te6edf3text-gray-500 Te6edf3dark:text-gray-400Ta5d6ff"
>
Publish to Mesh Server
</div>
<div v-if="Te6edf3pageNodes.Te6edf3length === T79c0ff0Ta5d6ff" class="Te6edf3px-3 Te6edf3py-2 Te6edf3text-xs Te6edf3text-gray-500 Te6edf3dark:text-gray-400Ta5d6ff">
No mesh servers available.
<router-link to="/Te6edf3mesh-serverTa5d6ff" class="Te6edf3text-blue-500 Te6edf3hover:underlineTa5d6ff"
>Create one</router-link
>
</div>
<button
v-for="Te6edf3pn Tffa657in Te6edf3pageNodesTa5d6ff"
:key="Te6edf3pn.Te6edf3node_idTa5d6ff"
class="Te6edf3w-full Te6edf3text-left Te6edf3px-3 Te6edf3py-2 Te6edf3text-sm Te6edf3hover:bg-gray-100 Te6edf3dark:hover:bg-zinc-700 Te6edf3flex Te6edf3items-center Te6edf3gap-2 Te6edf3transition-colorsTa5d6ff"
@click="Te6edf3publishToNode(Te6edf3pn)Ta5d6ff"
>
<div
class="Te6edf3w-2 Te6edf3h-2 Te6edf3rounded-full Te6edf3shrink-0Ta5d6ff"
:class="Te6edf3pn.Te6edf3running ? Ta5d6ff'bg-green-500' : Ta5d6ff'bg-gray-400'Ta5d6ff"
></div>
<span class="Tffa657truncate Te6edf3text-gray-900 Te6edf3dark:text-whiteTa5d6ff">{{ pn.name }}</span>
</button>
<div class="Te6edf3border-t Te6edf3border-gray-200 Te6edf3dark:border-zinc-700 Te6edf3mt-1 Te6edf3pt-1Ta5d6ff">
<button
class="Te6edf3w-full Te6edf3text-left Te6edf3px-3 Te6edf3py-2 Te6edf3text-xs Te6edf3text-gray-500 Te6edf3dark:text-gray-400 Te6edf3hover:bg-gray-100 Te6edf3dark:hover:bg-zinc-700 Te6edf3transition-colorsTa5d6ff"
@click="Te6edf3publishAllToNodeTa5d6ff"
>
Publish all tabs to server...
</button>
</div>
</div>
</div>
<button
v-if="Te6edf3wasmBundledTa5d6ff"
type="Te6edf3buttonTa5d6ff"
class="Te6edf3secondary-chip Te6edf3py-1! Te6edf3px-2! Te6edf3gap-1 Te6edf3text-[T79c0ff11Te6edf3px]!Ta5d6ff"
:class="{ Ta5d6ff'text-teal-600! dark:text-teal-300! border-teal-300! dark:border-teal-700!': Te6edf3useWasm }Ta5d6ff"
:disabled="Te6edf3wasmLoadingTa5d6ff"
:title="Te6edf3$t(Te6edf3useWasm ? Ta5d6ff'tools.micron_editor.wasm_active' : Ta5d6ff'tools.micron_editor.wasm_inactive')Ta5d6ff"
@click="Te6edf3toggleWasmEngineTa5d6ff"
>
<span
v-if="Te6edf3wasmLoadingTa5d6ff"
class="Te6edf3w-3 Te6edf3h-3 Te6edf3rounded-full Te6edf3border-2 Te6edf3border-current Te6edf3border-t-transparent Te6edf3animate-spinTa5d6ff"
></span>
<MaterialDesignIcon
v-else
:icon-name="Te6edf3useWasm ? Ta5d6ff'lightning-bolt' : Ta5d6ff'lightning-bolt-outline'Ta5d6ff"
class="Te6edf3w-3T79c0ff.5 Te6edf3h-3T79c0ff.5Ta5d6ff"
/>
<span class="Tffa657hidden Te6edf3sm:inlineTa5d6ff">{{ useWasm ? "Te6edf3WASMTa5d6ff" : "Te6edf3JSTa5d6ff" }}</span>
</button>
<button v-if="Te6edf3isMobileViewTa5d6ff" type="Te6edf3buttonTa5d6ff" class="Te6edf3primary-chip Te6edf3py-1! Te6edf3px-3!Ta5d6ff" @click="Te6edf3toggleViewTa5d6ff">
<MaterialDesignIcon :icon-name="Te6edf3showEditor ? Ta5d6ff'eye' : Ta5d6ff'pencil'Ta5d6ff" class="Te6edf3w-3T79c0ff.5 Te6edf3h-3T79c0ff.5Ta5d6ff" />
{{ showEditor ? $t("Te6edf3tools.Te6edf3micron_editor.Te6edf3view_previewTa5d6ff") : $t("Te6edf3tools.Te6edf3micron_editor.Te6edf3editTa5d6ff") }}
</button>
</template>
</ToolsPageHeader>

<!-- Tab Bar -->
<div
class="Te6edf3flex Te6edf3items-center Te6edf3px-3 Te6edf3sm:px-4 Te6edf3py-1 Te6edf3gap-1 Te6edf3border-b Te6edf3border-gray-200 Te6edf3dark:border-zinc-800 Te6edf3bg-slate-100 Te6edf3dark:bg-zinc-900 Te6edf3overflow-x-auto Te6edf3no-scrollbar Te6edf3shrink-0Ta5d6ff"
>
<div
v-for="(Te6edf3tab, Tffa657index) Tffa657in Te6edf3tabsTa5d6ff"
:key="Te6edf3tab.Tffa657idTa5d6ff"
class="Te6edf3group Te6edf3flex Te6edf3items-center Te6edf3h-8 Te6edf3px-3 Te6edf3rounded-lg Te6edf3text-xs Te6edf3font-medium Te6edf3transition-colors Te6edf3cursor-pointer Te6edf3whitespace-nowrapTa5d6ff"
:class="[
Te6edf3activeTabIndex === Tffa657index
? Ta5d6ff'bg-white dark:bg-zinc-800 text-teal-600 dark:text-teal-400 shadow-xs'
: Ta5d6ff'text-gray-500 hover:bg-white/50 dark:hover:bg-zinc-800/50 hover:text-gray-700 dark:hover:text-zinc-300',
]Ta5d6ff"
@click="Te6edf3activeTabIndex = Tffa657indexTa5d6ff"
>
<span v-if="Te6edf3editingTabIndex !== Tffa657indexTa5d6ff" @dblclick="Te6edf3startEditingTab(Tffa657index)Ta5d6ff">{{ tab.name }}</span>
<input
v-else
ref="Te6edf3tabInputTa5d6ff"
v-model="Te6edf3editingTabNameTa5d6ff"
class="Te6edf3bg-transparent Te6edf3border-none Te6edf3focus:ring-0 Te6edf3w-20 Te6edf3p-0 Te6edf3text-inheritTa5d6ff"
@blur="Te6edf3finishEditingTabTa5d6ff"
@keyup.enter="Te6edf3finishEditingTabTa5d6ff"
@click.stop
/>
<button
v-if="Te6edf3tabs.Te6edf3length > T79c0ff1Ta5d6ff"
type="Te6edf3buttonTa5d6ff"
class="Te6edf3ml-1 Te6edf3inline-flex Tff7b72minTff7b72-Te6edf3h-[T79c0ff28Te6edf3px] Tff7b72minTff7b72-Te6edf3w-[T79c0ff28Te6edf3px] Te6edf3items-center Te6edf3justify-center Te6edf3opacity-100 Te6edf3lg:opacity-0 Te6edf3lg:group-hover:opacity-100 Te6edf3hover:text-red-500 Te6edf3transition-opacityTa5d6ff"
@click.stop="Te6edf3removeTab(Tffa657index)Ta5d6ff"
>
<MaterialDesignIcon icon-name="Tffa657closeTa5d6ff" class="Te6edf3size-3Ta5d6ff" />
</button>
</div>
<button
class="Te6edf3flex Te6edf3items-center Te6edf3justify-center Te6edf3size-8 Te6edf3text-gray-400 Te6edf3hover:text-teal-500 Te6edf3transition-colorsTa5d6ff"
@click="Te6edf3addTabTa5d6ff"
>
<MaterialDesignIcon icon-name="Tffa657plusTa5d6ff" class="Te6edf3size-4Ta5d6ff" />
</button>
</div>

<div class="Te6edf3flex-1 Te6edf3flex Te6edf3overflow-hidden Tff7b72minTff7b72-Te6edf3w-0 Te6edf3pb-[Te6edf3env(Te6edf3safe-area-inset-bottom)]Ta5d6ff">
<!-- Editor Pane -->
<div
v-if="Te6edf3tabs.Te6edf3length > T79c0ff0Ta5d6ff"
:class="[
Ta5d6ff'flex-1 overflow-hidden flex flex-col',
Te6edf3isMobileView && !Te6edf3showEditor ? Ta5d6ff'hidden' : Ta5d6ff'',
!Te6edf3isMobileView ? Ta5d6ff'border-r border-gray-200 dark:border-zinc-800' : Ta5d6ff'',
]Ta5d6ff"
>
<textarea
ref="Te6edf3editorRefTa5d6ff"
v-model="Te6edf3tabs[Te6edf3activeTabIndex].Te6edf3contentTa5d6ff"
class="Te6edf3flex-1 Te6edf3w-full Te6edf3bg-white Te6edf3dark:bg-zinc-900 Te6edf3text-gray-900 Te6edf3dark:text-white Te6edf3p-4 Te6edf3font-mono Te6edf3text-sm Te6edf3resize-none Te6edf3focus:outline-hiddenTa5d6ff"
:placeholder="Te6edf3$t(Ta5d6ff'tools.micron_editor.placeholder')Ta5d6ff"
@input="Te6edf3handleInputTa5d6ff"
></textarea>
</div>

<!-- Preview Pane (Always dark to match NomadNet browser vibe) -->
<div
:class="[
Ta5d6ff'flex-1 overflow-hidden flex flex-col bg-zinc-950',
Te6edf3isMobileView && Te6edf3showEditor ? Ta5d6ff'hidden' : Ta5d6ff'',
]Ta5d6ff"
>
<!-- eslint-disable vue/no-v-html -->
<div
ref="Te6edf3previewRefTa5d6ff"
class="Te6edf3flex-1 Te6edf3overflow-auto Te6edf3text-zinc-100 Te6edf3p-4 Te6edf3font-mono Te6edf3text-sm Te6edf3whitespace-pre-wrap Te6edf3wrap-break-word Te6edf3nodeContainerTa5d6ff"
@click="Te6edf3onPreviewClickTa5d6ff"
v-html="Te6edf3renderedContentTa5d6ff"
></div>
<!-- eslint-enable vue/no-v-html -->
</div>
</div>
</div>
/template>

script>
import MaterialDesignIcon from "../Te6edf3MaterialDesignIcon.Te6edf3vueTa5d6ff";
import MicronParser from "../../Te6edf3jsTff7b72/Te6edf3MicronParser.Te6edf3jsTa5d6ff";
import { micronStorage } from "../../Te6edf3jsTff7b72/Te6edf3MicronStorageTa5d6ff";
import { preloadNomadMicronWasm, isMicronWasmBundled } from "../../Te6edf3jsTff7b72/Te6edf3MicronWasmLoaderTa5d6ff";
import DialogUtils from "../../Te6edf3jsTff7b72/Te6edf3DialogUtilsTa5d6ff";
import LinkUtils from "../../Te6edf3jsTff7b72/Te6edf3LinkUtils.Te6edf3jsTa5d6ff";
import { handleRichHtmlLinkClick } from "../../Te6edf3jsTff7b72/Te6edf3NomadRichHtmlLinks.Te6edf3jsTa5d6ff";
import ToolsPageHeader from "../Te6edf3toolsTff7b72/Te6edf3ToolsPageHeader.Te6edf3vueTa5d6ff";

const NOMAD_DESTINATION_HASH = /^[a-fA-F0-9]{32}$/;
const PAGE_EXTENSIONS = [".Te6edf3muTa5d6ff", ".Te6edf3htmlTa5d6ff", ".Te6edf3mdTa5d6ff", ".Te6edf3txtTa5d6ff"];

export default {
name: "Te6edf3MicronEditorPageTa5d6ff",
components: {
MaterialDesignIcon,
ToolsPageHeader,
},
data() {
return {
tabs: [],
activeTabIndex: 0,
renderedContent: "Ta5d6ff",
showEditor: true,
isMobileView: false,
storageKey: "Te6edf3micron_editor_contentTa5d6ff",
editingTabIndex: -1,
editingTabName: "Ta5d6ff",
showPublishMenu: false,
pageNodes: [],
useWasm: false,
wasmReady: false,
wasmBundled: isMicronWasmBundled(),
wasmLoading: false,
};
},
watch: {
activeTabIndex() {
this.renderActiveTab();
},
},
async mounted() {
await this.loadContent();
this.handleResize();
window.addEventListener("Te6edf3resizeTa5d6ff", this.handleResize);
this.renderActiveTab();
},
beforeUnmount() {
window.removeEventListener("Te6edf3resizeTa5d6ff", this.handleResize);
},
methods: {
handleResize() {
this.isMobileView = window.innerWidth < 768;
if (!this.isMobileView) {
this.showEditor = true;
}
},
handleInput() {
this.renderActiveTab();
this.saveContent();
},
openExternalHttpUrl(url) {
if (!url) {
return;
}
window.open(url, "Te6edf3_blankTa5d6ff", "Te6edf3noopener,Te6edf3noreferrerTa5d6ff");
},
openNomadDestination(destination) {
const raw = String(destination || "Ta5d6ff")
.trim()
.replace(/^nomadnetwork:\/\//i, "Ta5d6ff")
.replace(/^lxmf:\/\//i, "Ta5d6ff");
if (!raw) {
return;
}
const httpHref = LinkUtils.httpUrlHrefOrNull(raw);
if (httpHref) {
this.openExternalHttpUrl(httpHref);
return;
}
const [hash, ...pathParts] = raw.split(":Ta5d6ff");
if (!NOMAD_DESTINATION_HASH.test(hash)) {
return;
}
const pathPart = pathParts.join(":Ta5d6ff") || "/Te6edf3pageTff7b72/Tffa657index.Te6edf3muTa5d6ff";
const pagePath = pathPart.split("`Ta5d6ff")[0].split("?Ta5d6ff")[0];
this.$router.push({
name: "Te6edf3nomadnetworkTa5d6ff",
params: { destinationHash: hash },
query: { path: pagePath },
});
},
onPreviewClick(event) {
handleRichHtmlLinkClick(event, {
scrollRoot: this.$refs.previewRef,
onNomadUrl: (url) => this.openNomadDestination(url),
onOpenNode: (destination) => this.openNomadDestination(destination),
});
},
renderActiveTab() {
if (this.tabs.length === 0 || !this.tabs[this.activeTabIndex]) {
this.renderedContent = "Ta5d6ff";
return;
}
try {
const parser = new MicronParser(true);
this.renderedContent = parser.convertMicronToHtml(
this.tabs[this.activeTabIndex].content,
{},
{ useWasm: this.useWasm && this.wasmReady }
);
} catch (error) {
console.error("Te6edf3Error Te6edf3rendering Te6edf3micron:Ta5d6ff", error);
const msg = String(error?.message ?? error ?? "Te6edf3unknown Te6edf3errorTa5d6ff")
.replace(/&/g, "Te6edf3&amp;Ta5d6ff")
.replace(/</g, "Te6edf3&lt;Ta5d6ff")
.replace(/>/g, "Te6edf3&gt;Ta5d6ff")
.replace(/"/Te6edf3g, Ta5d6ff"&quot;");
Te6edf3this.Te6edf3renderedContent = `Ta5d6ff<p style="color: red;">Te6edf3Error Te6edf3rendering: ${Te6edf3msg}Ta5d6ff</p>`;
}
},
Te6edf3toggleView() {
Te6edf3this.Te6edf3showEditor = !Te6edf3this.Te6edf3showEditor;
},
Te6edf3async Te6edf3toggleWasmEngine() {
Tff7b72if (!Te6edf3this.Te6edf3wasmBundled) Tff7b72return;
Tff7b72if (Te6edf3this.Te6edf3useWasm) {
Te6edf3this.Te6edf3useWasm = Te6edf3false;
Te6edf3this.Te6edf3renderActiveTab();
Tff7b72return;
}
Te6edf3this.Te6edf3wasmLoading = Te6edf3true;
Tff7b72try {
Te6edf3const Tffa657ready = Tffa657await Te6edf3preloadNomadMicronWasm();
Te6edf3this.Te6edf3wasmReady = Tffa657ready === Te6edf3true && Te6edf3typeof Te6edf3globalThis.Te6edf3micronConvert === Ta5d6ff"function";
Tff7b72if (Te6edf3this.Te6edf3wasmReady) {
Te6edf3this.Te6edf3useWasm = Te6edf3true;
Te6edf3this.Te6edf3renderActiveTab();
}
} Te6edf3finally {
Te6edf3this.Te6edf3wasmLoading = Te6edf3false;
}
},
Te6edf3async Te6edf3saveContent() {
Tff7b72try {
Tffa657await Te6edf3micronStorage.Te6edf3saveTabs(Te6edf3this.Te6edf3tabs);
} Te6edf3catch (Te6edf3error) {
Te6edf3console.Tffa657warn(Ta5d6ff"Failed to save content to IndexedDB:", Te6edf3error);
}
},
Te6edf3async Te6edf3loadContent() {
Tff7b72try {
Te6edf3const Te6edf3savedTabs = Tffa657await Te6edf3micronStorage.Te6edf3loadTabs();
Tff7b72if (Te6edf3savedTabs && Te6edf3savedTabs.Te6edf3length > T79c0ff0) {
Te6edf3this.Te6edf3tabs = Te6edf3savedTabs;
} Tff7b72else {
// Te6edf3Try Tffa657to Tffa657migrate Tffa657from Te6edf3localStorage
Te6edf3const Te6edf3oldContent = Te6edf3localStorage.Te6edf3getItem(Te6edf3this.Te6edf3storageKey);
Tff7b72if (Te6edf3oldContent) {
Te6edf3this.Te6edf3tabs = [
{
Te6edf3id: Tffa657Date.Tffa657now(),
Te6edf3name: Te6edf3this.Te6edf3$t(Ta5d6ff"tools.micron_editor.main_tab"),
Te6edf3content: Te6edf3oldContent,
},
Te6edf3this.Te6edf3createGuideTab(Tffa657Date.Tffa657now() + T79c0ff1),
];
Te6edf3localStorage.Te6edf3removeItem(Te6edf3this.Te6edf3storageKey);
Tffa657await Te6edf3micronStorage.Te6edf3saveTabs(Te6edf3this.Te6edf3tabs);
} Tff7b72else {
Te6edf3this.Te6edf3tabs = [Te6edf3this.Te6edf3createDefaultTab(), Te6edf3this.Te6edf3createGuideTab(Tffa657Date.Tffa657now() + T79c0ff1)];
Tffa657await Te6edf3micronStorage.Te6edf3saveTabs(Te6edf3this.Te6edf3tabs);
}
}
} Te6edf3catch (Te6edf3error) {
Te6edf3console.Tffa657warn(Ta5d6ff"Failed to load content from IndexedDB:", Te6edf3error);
Te6edf3this.Te6edf3tabs = [Te6edf3this.Te6edf3createDefaultTab(), Te6edf3this.Te6edf3createGuideTab(Tffa657Date.Tffa657now() + T79c0ff1)];
}
Te6edf3this.Te6edf3activeTabIndex = T79c0ff0;
},
Te6edf3createDefaultTab() {
Tff7b72return {
Te6edf3id: Tffa657Date.Tffa657now(),
Te6edf3name: Te6edf3this.Te6edf3$t(Ta5d6ff"tools.micron_editor.main_tab"),
Te6edf3content: Te6edf3this.Te6edf3getDefaultContent(),
};
},
Te6edf3createGuideTab(Tffa657id = Tffa657Date.Tffa657now()) {
Tff7b72return {
Te6edf3id: Tffa657id,
Te6edf3name: Te6edf3this.Te6edf3$t(Ta5d6ff"tools.micron_editor.guide_tab"),
Te6edf3content: Te6edf3this.Te6edf3getGuideContent(),
};
},
Te6edf3addTab() {
Te6edf3const Te6edf3newTab = {
Te6edf3id: Tffa657Date.Tffa657now(),
Te6edf3name: `${Te6edf3this.Te6edf3$t(Ta5d6ff"tools.micron_editor.new_tab")} ${Te6edf3this.Te6edf3tabs.Te6edf3length + T79c0ff1}`,
Te6edf3content: Ta5d6ff"",
};
Te6edf3this.Te6edf3tabs.Tffa657push(Te6edf3newTab);
Te6edf3this.Te6edf3activeTabIndex = Te6edf3this.Te6edf3tabs.Te6edf3length - T79c0ff1;
Te6edf3this.Te6edf3saveContent();
},
Te6edf3async Te6edf3removeTab(Tffa657index) {
Tff7b72if (Tffa657await Te6edf3DialogUtils.Te6edf3confirm(Te6edf3this.Te6edf3$t(Ta5d6ff"tools.micron_editor.confirm_delete_tab"))) {
Te6edf3this.Te6edf3tabs.Tffa657splice(Tffa657index, T79c0ff1);
Tff7b72if (Te6edf3this.Te6edf3activeTabIndex >= Te6edf3this.Te6edf3tabs.Te6edf3length) {
Te6edf3this.Te6edf3activeTabIndex = Te6edf3Math.Tffa657max(T79c0ff0, Te6edf3this.Te6edf3tabs.Te6edf3length - T79c0ff1);
}
Te6edf3this.Te6edf3saveContent();
}
},
Te6edf3startEditingTab(Tffa657index) {
Te6edf3this.Te6edf3editingTabIndex = Tffa657index;
Te6edf3this.Te6edf3editingTabName = Te6edf3this.Te6edf3tabs[Tffa657index].Tffa657name;
Te6edf3this.Te6edf3$nextTick(() => {
Tff7b72if (Te6edf3this.Te6edf3$refs.Te6edf3tabInput && Te6edf3this.Te6edf3$refs.Te6edf3tabInput[T79c0ff0]) {
Te6edf3this.Te6edf3$refs.Te6edf3tabInput[T79c0ff0].Te6edf3focus();
}
});
},
Te6edf3finishEditingTab() {
Tff7b72if (Te6edf3this.Te6edf3editingTabIndex !== -T79c0ff1) {
Tff7b72if (Te6edf3this.Te6edf3editingTabName.Tffa657trim()) {
Te6edf3this.Te6edf3tabs[Te6edf3this.Te6edf3editingTabIndex].Tffa657name = Te6edf3this.Te6edf3editingTabName.Tffa657trim();
}
Te6edf3this.Te6edf3editingTabIndex = -T79c0ff1;
Te6edf3this.Te6edf3saveContent();
}
},
Te6edf3async Te6edf3resetAll() {
Tff7b72if (Tffa657await Te6edf3DialogUtils.Te6edf3confirm(Te6edf3this.Te6edf3$t(Ta5d6ff"tools.micron_editor.confirm_reset"))) {
Tffa657await Te6edf3micronStorage.Te6edf3clearAll();
Te6edf3this.Te6edf3tabs = [Te6edf3this.Te6edf3createDefaultTab(), Te6edf3this.Te6edf3createGuideTab(Tffa657Date.Tffa657now() + T79c0ff1)];
Te6edf3this.Te6edf3activeTabIndex = T79c0ff0;
Te6edf3this.Te6edf3renderActiveTab();
Tffa657await Te6edf3this.Te6edf3saveContent();
}
},
Te6edf3getDefaultContent() {
Te6edf3const Te6edf3b = Ta5d6ff"`";
Tff7b72return `${Te6edf3b}Te6edf3Ffd0
${Te6edf3b}=
Te6edf3_ Te6edf3_
(Te6edf3_) (Te6edf3_)
Te6edf3_ Te6edf3__ Te6edf3___ Te6edf3_ Te6edf3___ Te6edf3_ Te6edf3__ Te6edf3___ Te6edf3_ Te6edf3__ Te6edf3______ Te6edf3_ Te6edf3__ Te6edf3__ Te6edf3_ Te6edf3_ Te6edf3__ Te6edf3___ Te6edf3___ Te6edf3_ Te6edf3__ Te6edf3_ Te6edf3___
| Ta5d6ff'_ \` _ \\| |/ __| 'Te6edf3__/ Te6edf3_ \\| Ta5d6ff'_ \\______| 'Te6edf3_ \\ / Te6edf3_\` | Ta5d6ff'__/ __|/ _ \\ 'Te6edf3__| / Te6edf3__|
| | | | | | | (Te6edf3__| | | (Te6edf3_) | | | | | |Te6edf3_) | (Te6edf3_| | | \\Te6edf3__ \\\\ Te6edf3__/ |Te6edf3_ | \\Te6edf3__ \\\\
|Te6edf3_| |Te6edf3_| |Te6edf3_Tff7b72|Te6edf3_|\\Te6edf3___Tff7b72|Te6edf3_| \\Te6edf3___/|Te6edf3_| |Te6edf3_| | .Te6edf3__/ \\Te6edf3__,Te6edf3_Tff7b72|Te6edf3_| |Te6edf3___/\\Te6edf3___Tff7b72|Te6edf3_(Te6edf3_)| |Te6edf3___/
| | Te6edf3_/ |
|Te6edf3_| |Te6edf3__/

${Te6edf3b}=
${Te6edf3b}Tffa657f

${Te6edf3b}!Te6edf3Welcome Tffa657to Te6edf3Micron Te6edf3Editor${Te6edf3b}!
-
Te6edf3Micron Tff7b72is Te6edf3a Te6edf3lightweight, Te6edf3terminal-friendly Te6edf3monospace Te6edf3markup Tffa657format Te6edf3used Tffa657in Te6edf3Reticulum Te6edf3applications Te6edf3such Te6edf3as ${Te6edf3b}!Te6edf3MeshChatX${Te6edf3b}! Tff7b72and ${Te6edf3b}!Te6edf3NomadNet${Te6edf3b}!.

Te6edf3Micron Te6edf3supports Te6edf3sections, Te6edf3dividers, Te6edf3links, Te6edf3partials, Te6edf3anchors, Te6edf3tables, Tff7b72and Tffa657dynamic Te6edf3input Te6edf3fields Tff7b72for Te6edf3low-bandwidth Te6edf3mesh Te6edf3pages.

Te6edf3Open Te6edf3the ${Te6edf3b}!${Te6edf3this.Te6edf3$t(Ta5d6ff"tools.micron_editor.guide_tab")}${Te6edf3b}! Te6edf3tab Tff7b72for Te6edf3the Tffa657full Te6edf3reference, Tff7b72or Tff7b72use ${Te6edf3b}+${Te6edf3b} Tffa657to Tffa657add Te6edf3another Tffa657file.

${Te6edf3b}!Te6edf3With Te6edf3Micron, Te6edf3you Tffa657can${Te6edf3b}${Te6edf3b}:

${Te6edf3b}Te6edf3c Te6edf3Align${Te6edf3b}Te6edf3b

${Te6edf3b}Tffa657r Te6edf3text,

${Te6edf3b}Te6edf3a
${Te6edf3b}Te6edf3c
Te6edf3set ${Te6edf3b}Te6edf3B005 Te6edf3backgrounds, ${Te6edf3b}Te6edf3b Tff7b72and ${Te6edf3b}*${Te6edf3b} ${Te6edf3b}Te6edf3B777${Te6edf3b}Te6edf3Ffffcombine Tffa657any Te6edf3number Tffa657of${Te6edf3b}Tffa657f${Te6edf3b}Te6edf3b${Te6edf3b}Te6edf3_${Te6edf3b}Te6edf3_ ${Te6edf3b}Te6edf3Ff00f${Te6edf3b}Te6edf3Ff80o${Te6edf3b}Te6edf3Ffd0r${Te6edf3b}Te6edf3F9f0m${Te6edf3b}Te6edf3F0f2a${Te6edf3b}Te6edf3F0fdt${Te6edf3b}Te6edf3F07ft${Te6edf3b}Te6edf3F43fi${Te6edf3b}Te6edf3F70fn${Te6edf3b}Te6edf3Fe0fg ${Te6edf3b}Te6edf3ftags.
${Te6edf3b}${Te6edf3b}

>Te6edf3Getting Te6edf3Started

Te6edf3Start Te6edf3editing Te6edf3your Te6edf3Micron Te6edf3markup Tffa657in Te6edf3the Te6edf3editor Te6edf3pane. Te6edf3The Te6edf3preview Te6edf3will Te6edf3update Te6edf3automatically.

>Te6edf3Formatting

Te6edf3Text Tffa657can Te6edf3be ${Te6edf3b}!Te6edf3bold${Te6edf3b}! Te6edf3by Te6edf3using \\${Te6edf3b}!, \\${Te6edf3b}Te6edf3_, Tff7b72and \\${Te6edf3b}*.

>Te6edf3Colors

Te6edf3Foreground Te6edf3colors: ${Te6edf3b}Te6edf3Ff00${Te6edf3b}Te6edf3Ff80o${Te6edf3b}Te6edf3Ffd0r${Te6edf3b}Te6edf3F9f0m${Te6edf3b}Te6edf3F0f2a${Te6edf3b}Te6edf3F0fdt${Te6edf3b}Te6edf3F07ft${Te6edf3b}Te6edf3F43fi${Te6edf3b}Te6edf3F70fn${Te6edf3b}Te6edf3Fe0fg${Te6edf3b}Tffa657f
Te6edf3Background Te6edf3colors: ${Te6edf3b}Te6edf3Bf00${Te6edf3b}Te6edf3Bf80o${Te6edf3b}Te6edf3Bfd0r${Te6edf3b}Te6edf3B9f0m${Te6edf3b}Te6edf3B0f2a${Te6edf3b}Te6edf3B0fdt${Te6edf3b}Te6edf3B07ft${Te6edf3b}Te6edf3B43fi${Te6edf3b}Te6edf3B70fn${Te6edf3b}Te6edf3Be0fg${Te6edf3b}Te6edf3b

>Te6edf3Links

Te6edf3Create Te6edf3links Tff7b72with \\${Te6edf3b}[ Te6edf3tag: ${Te6edf3b}Te6edf3_${Te6edf3b}[Te6edf3Example Te6edf3Link${Te6edf3b}Te6edf3example.Te6edf3com]${Te6edf3b}]${Te6edf3b}Te6edf3_

>Te6edf3Literals

Te6edf3Use \\${Te6edf3b}= Tffa657to Tffa657startTff7b72/Tffa657end Te6edf3literal Te6edf3blocks Te6edf3that Te6edf3won't Te6edf3be Te6edf3interpreted.

${Te6edf3b}=
Te6edf3This Tff7b72is Te6edf3a Te6edf3literal Tffa657block
${Te6edf3b}=
`;
},
Te6edf3getGuideContent() {
Te6edf3const Te6edf3b = Ta5d6ff"`";
Tff7b72return `-∿
<

${Te6edf3b}Te6edf3c${Te6edf3b}!Te6edf3Hello!${Te6edf3b}! Te6edf3This Tff7b72is Te6edf3output Tffa657from ${Te6edf3b}*Te6edf3micron${Te6edf3b}*
Te6edf3Micron Te6edf3generates Te6edf3formatted Te6edf3text Tff7b72for Te6edf3your Te6edf3terminal
${Te6edf3b}Te6edf3a


-∿
<


Te6edf3Nomad Te6edf3Network Te6edf3supports Te6edf3a Te6edf3simple Tff7b72and Te6edf3functional Te6edf3markup Te6edf3language Te6edf3called ${Te6edf3b}*Te6edf3micron${Te6edf3b}*. Te6edf3If Te6edf3you Te6edf3are Te6edf3familiar Tff7b72with ${Te6edf3b}*Te6edf3markdown${Te6edf3b}* Tff7b72or ${Te6edf3b}*Te6edf3HTML${Te6edf3b}*, Te6edf3you Te6edf3will Te6edf3feel Tffa657right Tffa657at Te6edf3home Te6edf3writing Te6edf3pages Tff7b72with Te6edf3micron.

Te6edf3With Te6edf3micron Te6edf3you Tffa657can Te6edf3easily Te6edf3create Te6edf3structured Te6edf3documents Tff7b72and Te6edf3pages Tff7b72with Te6edf3formatting, Te6edf3colors, Te6edf3glyphs Tff7b72and Te6edf3icons, Te6edf3ideal Tff7b72for Te6edf3display Tffa657in Te6edf3terminals.

>Te6edf3Table Tffa657of Te6edf3Contents

${Te6edf3b}Te6edf3F44f${Te6edf3b}Te6edf3_${Te6edf3b}[Te6edf3A Te6edf3Few Te6edf3Demo Te6edf3Outputs${Te6edf3b}T8b949e#a-few-demo-outputs]${b}_${b}f
${Te6edf3b}Te6edf3F44f${Te6edf3b}Te6edf3_${Te6edf3b}[Te6edf3Micron Te6edf3Tags${Te6edf3b}T8b949e#micron-tags]${b}_${b}f
${Te6edf3b}Te6edf3F44f${Te6edf3b}Te6edf3_${Te6edf3b}[Te6edf3Colors${Te6edf3b}T8b949e#colors]${b}_${b}f
${Te6edf3b}Te6edf3F44f${Te6edf3b}Te6edf3_${Te6edf3b}[Te6edf3Page Te6edf3Foreground Tff7b72and Te6edf3Background Te6edf3Colors${Te6edf3b}T8b949e#page-foreground-and-background-colors]${b}_${b}f
${Te6edf3b}Te6edf3F44f${Te6edf3b}Te6edf3_${Te6edf3b}[Te6edf3Links${Te6edf3b}T8b949e#links]${b}_${b}f
${Te6edf3b}Te6edf3F44f${Te6edf3b}Te6edf3_${Te6edf3b}[Te6edf3Anchors${Te6edf3b}T8b949e#anchors]${b}_${b}f
${Te6edf3b}Te6edf3F44f${Te6edf3b}Te6edf3_${Te6edf3b}[Te6edf3Tables${Te6edf3b}T8b949e#tables]${b}_${b}f
${Te6edf3b}Te6edf3F44f${Te6edf3b}Te6edf3_${Te6edf3b}[Te6edf3Fields & Te6edf3Requests${Te6edf3b}T8b949e#fields-requests]${b}_${b}f
${Te6edf3b}Te6edf3F44f${Te6edf3b}Te6edf3_${Te6edf3b}[Te6edf3Comments${Te6edf3b}T8b949e#comments]${b}_${b}f
${Te6edf3b}Te6edf3F44f${Te6edf3b}Te6edf3_${Te6edf3b}[Te6edf3Partials${Te6edf3b}T8b949e#partials]${b}_${b}f
${Te6edf3b}Te6edf3F44f${Te6edf3b}Te6edf3_${Te6edf3b}[Te6edf3Literals${Te6edf3b}T8b949e#literals]${b}_${b}f

>>Te6edf3Recommendations Tff7b72and Te6edf3Requirements

Te6edf3While Te6edf3micron Tffa657can Te6edf3output Te6edf3formatted Te6edf3text Tffa657to Te6edf3even Te6edf3the Te6edf3most Te6edf3basic Te6edf3terminal, Te6edf3there's Te6edf3a Te6edf3few Te6edf3capabilities Te6edf3your Te6edf3terminal ${Te6edf3b}*Te6edf3must${Te6edf3b}* Te6edf3support Tffa657to Te6edf3display Te6edf3micron Te6edf3output Te6edf3correctly, Tff7b72and Te6edf3some Te6edf3that, Tff7b72while Tffa657not Te6edf3strictly Te6edf3necessary, Tff7b72make Te6edf3the Te6edf3experience Te6edf3a Te6edf3lot Te6edf3better.

Te6edf3Formatting Te6edf3such Te6edf3as ${Te6edf3b}Te6edf3_underline${Te6edf3b}Te6edf3_, ${Te6edf3b}!Te6edf3bold${Te6edf3b}! Tff7b72or ${Te6edf3b}*Te6edf3italics${Te6edf3b}* Te6edf3will Te6edf3be Te6edf3displayed Tff7b72if Te6edf3your Te6edf3terminal Te6edf3supports Te6edf3it.

Te6edf3If Te6edf3you Te6edf3are Te6edf3having Te6edf3trouble Te6edf3getting Te6edf3micron Te6edf3output Tffa657to Te6edf3display Te6edf3correctly, Tff7b72try Te6edf3using ${Te6edf3b}*Te6edf3gnome-terminal${Te6edf3b}* Tff7b72or ${Te6edf3b}*Te6edf3alacritty${Te6edf3b}*, Te6edf3which Te6edf3should Te6edf3work Tff7b72with Tffa657all Te6edf3formatting Te6edf3options Te6edf3out Tffa657of Te6edf3the Te6edf3box. Te6edf3Most Te6edf3other Te6edf3terminals Te6edf3will Te6edf3work Te6edf3fine Te6edf3as Te6edf3well, Tff7b72but Te6edf3you Te6edf3might Te6edf3have Tffa657to Te6edf3change Te6edf3some Te6edf3settings Tffa657to Tffa657get Te6edf3certain Te6edf3formatting Tffa657to Te6edf3display Te6edf3correctly.

>>>Tffa657Encoding

Te6edf3All Te6edf3micron Te6edf3sources Te6edf3are Te6edf3intepreted Te6edf3as Te6edf3UTF-8, Tff7b72and Te6edf3micron Te6edf3assumes Te6edf3it Tffa657can Te6edf3output Te6edf3UTF-8 Te6edf3characters Tffa657to Te6edf3the Te6edf3terminal. Te6edf3If Te6edf3your Te6edf3terminal Tff7b72does Tffa657not Te6edf3support Te6edf3UTF-8, Te6edf3output Te6edf3will Te6edf3be Te6edf3faulty.

>>>Te6edf3Colors

Te6edf3Shading Tff7b72and Te6edf3coloring Te6edf3text Tff7b72and Te6edf3backgrounds Tff7b72is Te6edf3integral Tffa657to Te6edf3micron Te6edf3output, Tff7b72and Tff7b72while Te6edf3micron Te6edf3will Te6edf3attempt Tffa657to Te6edf3gracefully Te6edf3degrade Te6edf3output Te6edf3even Tffa657to T79c0ff1Tff7b72-Te6edf3bit Te6edf3terminals, Te6edf3you Te6edf3will Tffa657get Te6edf3the Te6edf3best Te6edf3output Tff7b72with Te6edf3terminals Te6edf3supporting Tffa657at Te6edf3least T79c0ff256 Te6edf3colors. Te6edf3True-color Te6edf3support Tff7b72is Te6edf3recommended.

>>>Te6edf3Terminal Te6edf3Font

Te6edf3While Tffa657any Te6edf3unicode Te6edf3capable Te6edf3font Tffa657can Te6edf3be Te6edf3used Tff7b72with Te6edf3micron, Te6edf3it's Te6edf3highly Te6edf3recommended Tffa657to Tff7b72use Te6edf3a ${Te6edf3b}*Ta5d6ff"Nerd Font"${Te6edf3b}* (Te6edf3see Te6edf3https://Te6edf3www.Te6edf3nerdfonts.Te6edf3com/), Te6edf3which Te6edf3will Tffa657add Te6edf3a Te6edf3lot Tffa657of Tff7b72extra Te6edf3glyphs Tff7b72and Te6edf3icons Tffa657to Te6edf3your Te6edf3output.

> Te6edf3A Te6edf3Few Te6edf3Demo Te6edf3Outputs

${Te6edf3b}Te6edf3F222${Te6edf3b}Te6edf3Bddd

${Te6edf3b}Te6edf3cWith Te6edf3micron, Te6edf3you Tffa657can Te6edf3control Te6edf3layout Tff7b72and Te6edf3presentation
${Te6edf3b}Te6edf3a

${Te6edf3b}${Te6edf3b}

${Te6edf3b}Te6edf3B33f

Te6edf3You Tffa657can Te6edf3change Te6edf3background ...

${Te6edf3b}${Te6edf3b}

${Te6edf3b}Te6edf3B393

${Te6edf3b}Tffa657r${Te6edf3b}Te6edf3F320... Tff7b72and Te6edf3foreground Te6edf3colors${Te6edf3b}Tffa657f
${Te6edf3b}Te6edf3a

${Te6edf3b}Te6edf3b

Te6edf3If Te6edf3you Te6edf3want Tffa657to Tff7b72make Te6edf3a Tffa657break, Te6edf3horizontal Te6edf3dividers Tffa657can Te6edf3be Te6edf3inserted. Te6edf3They Tffa657can Te6edf3be Te6edf3plain, Tffa657like Te6edf3the Tffa657one Te6edf3below Te6edf3this Te6edf3text, Tff7b72or Te6edf3you Tffa657can Te6edf3style Te6edf3them Tff7b72with Te6edf3unicode Te6edf3characters Tff7b72and Te6edf3glyphs, Tffa657like Te6edf3the Te6edf3wavy Te6edf3divider Tffa657in Te6edf3the Te6edf3beginning Tffa657of Te6edf3this Te6edf3document.

-

${Te6edf3b}Te6edf3cText Tffa657can Te6edf3be ${Te6edf3b}Te6edf3_underlined${Te6edf3b}Te6edf3_, ${Te6edf3b}!Te6edf3bold${Te6edf3b}! Tff7b72or ${Te6edf3b}*Te6edf3italic${Te6edf3b}*.

Te6edf3You Tffa657can Tff7b72also ${Te6edf3b}Te6edf3_${Te6edf3b}*${Te6edf3b}!Te6edf3B5d5${Te6edf3b}Te6edf3F222combine${Te6edf3b}Tffa657f${Te6edf3b}Te6edf3b${Te6edf3b}Te6edf3_ ${Te6edf3b}Te6edf3_${Te6edf3b}Te6edf3Ff00f${Te6edf3b}Te6edf3Ff80o${Te6edf3b}Te6edf3Ffd0r${Te6edf3b}Te6edf3F9f0m${Te6edf3b}Te6edf3F0f2a${Te6edf3b}Te6edf3F0fdt${Te6edf3b}Te6edf3F07ft${Te6edf3b}Te6edf3F43fi${Te6edf3b}Te6edf3F70fn${Te6edf3b}Te6edf3Fe0fg${Te6edf3b}${Te6edf3b} Tff7b72for Te6edf3some Te6edf3fabulous Te6edf3effects.
${Te6edf3b}Te6edf3a


>>>Te6edf3Sections Tff7b72and Te6edf3Headings

Te6edf3You Tffa657can Te6edf3define Te6edf3an Te6edf3arbitrary Te6edf3number Tffa657of Te6edf3sections Tff7b72and Tff7b72sub Te6edf3sections, Te6edf3each Tff7b72with Te6edf3their Te6edf3own Tffa657named Te6edf3headings. Te6edf3Text Te6edf3inside Te6edf3sections Te6edf3will Te6edf3be Te6edf3automatically Te6edf3indented.

-

Te6edf3If Te6edf3you Te6edf3place Te6edf3a Te6edf3divider Te6edf3inside Te6edf3a Te6edf3section, Te6edf3it Te6edf3will Te6edf3adhere Tffa657to Te6edf3the Te6edf3section Te6edf3indents.

>>>>>
Te6edf3If Te6edf3no Te6edf3heading Te6edf3text Tff7b72is Tffa657defined, Te6edf3the Te6edf3section Te6edf3will Te6edf3appear Te6edf3as Te6edf3a Te6edf3sub-section Tff7b72without Te6edf3a Te6edf3header. Te6edf3This Tffa657can Te6edf3be Te6edf3useful Tff7b72for Te6edf3creating Te6edf3indented Te6edf3blocks Tffa657of Te6edf3text, Tffa657like Te6edf3this Tffa657one.

>Te6edf3Micron Te6edf3tags

Te6edf3Tags Te6edf3are Te6edf3used Tffa657to Tffa657format Te6edf3text Tff7b72with Te6edf3micron. Te6edf3Some Te6edf3tags Tffa657can Te6edf3appear Te6edf3anywhere Tffa657in Te6edf3text, Tff7b72and Te6edf3some Te6edf3must Te6edf3appear Tffa657at Te6edf3the Te6edf3beginning Tffa657of Te6edf3a Tffa657line. Te6edf3If Te6edf3you Tff7b72need Tffa657to Tffa657write Te6edf3text Te6edf3that Tffa657contains Te6edf3a Te6edf3sequence Te6edf3that Te6edf3would Te6edf3be Te6edf3interpreted Te6edf3as Te6edf3a Te6edf3tag, Te6edf3you Tffa657can Te6edf3escape Te6edf3it Tff7b72with Te6edf3the Te6edf3character \\.

Te6edf3In Te6edf3the Te6edf3following Te6edf3sections, Te6edf3the Te6edf3different Te6edf3tags Te6edf3will Te6edf3be Te6edf3introduced. Tffa657Any Te6edf3styling Te6edf3set Te6edf3within Te6edf3micron Tffa657can Te6edf3be Te6edf3reset Tffa657to Te6edf3the Tff7b72default Te6edf3style Te6edf3by Te6edf3using Te6edf3the Te6edf3special \\${Te6edf3b}\\${Te6edf3b} Te6edf3tag Te6edf3anywhere Tffa657in Te6edf3the Te6edf3markup, Te6edf3which Te6edf3will Te6edf3immediately Te6edf3remove Tffa657any Te6edf3formatting Te6edf3previously Te6edf3specified.

>>Te6edf3Alignment

Te6edf3To Te6edf3control Te6edf3text Te6edf3alignment Tff7b72use Te6edf3the Te6edf3tag \\${Te6edf3b}Te6edf3c Tffa657to Te6edf3center Te6edf3text, \\${Te6edf3b}Tffa657l Tffa657to Te6edf3left-align, \\${Te6edf3b}Tffa657r Tffa657to Te6edf3right-align, Tff7b72and \\${Te6edf3b}Te6edf3a Tffa657to Tff7b72return Tffa657to Te6edf3the Tff7b72default Te6edf3alignment Tffa657of Te6edf3the Te6edf3document. Te6edf3Alignment Te6edf3tags Te6edf3must Te6edf3appear Tffa657at Te6edf3the Te6edf3beginning Tffa657of Te6edf3a Tffa657line. Te6edf3Here Tff7b72is Te6edf3an Te6edf3example:

${Te6edf3b}Te6edf3Faaa
${Te6edf3b}=
${Te6edf3b}Te6edf3cThis Tffa657line Te6edf3will Te6edf3be Te6edf3centered.
Te6edf3So Te6edf3will Te6edf3this.
${Te6edf3b}Te6edf3aThe Te6edf3alignment Tff7b72has Tffa657now Te6edf3been Te6edf3returned Tffa657to Tff7b72default.
${Te6edf3b}Te6edf3rThis Te6edf3will Te6edf3be Te6edf3aligned Tffa657to Te6edf3the Tffa657right
${Te6edf3b}${Te6edf3b}
${Te6edf3b}=
${Te6edf3b}${Te6edf3b}

Te6edf3The Te6edf3above Te6edf3markup Te6edf3produces Te6edf3the Te6edf3following Te6edf3output:

${Te6edf3b}Te6edf3Faaa${Te6edf3b}Te6edf3B333

${Te6edf3b}Te6edf3cThis Tffa657line Te6edf3will Te6edf3be Te6edf3centered.
Te6edf3So Te6edf3will Te6edf3this.

${Te6edf3b}Te6edf3aThe Te6edf3alignment Tff7b72has Tffa657now Te6edf3been Te6edf3returned Tffa657to Tff7b72default.

${Te6edf3b}Te6edf3rThis Te6edf3will Te6edf3be Te6edf3aligned Tffa657to Te6edf3the Tffa657right

${Te6edf3b}${Te6edf3b}


>>Te6edf3Formatting

Te6edf3Text Tffa657can Te6edf3be Te6edf3formatted Te6edf3as ${Te6edf3b}!Te6edf3bold${Te6edf3b}! Te6edf3by Te6edf3using Te6edf3the \\${Te6edf3b}! Te6edf3tag, ${Te6edf3b}Te6edf3_underline${Te6edf3b}Te6edf3_ Te6edf3by Te6edf3using Te6edf3the \\${Te6edf3b}Te6edf3_ Te6edf3tag Tff7b72and ${Te6edf3b}*Te6edf3italic${Te6edf3b}* Te6edf3by Te6edf3using Te6edf3the \\${Te6edf3b}* Te6edf3tag.

Te6edf3Here's Te6edf3an Te6edf3example Tffa657of Te6edf3formatting Te6edf3text:

${Te6edf3b}Te6edf3Faaa
${Te6edf3b}=
Te6edf3We Te6edf3shall Te6edf3soon Te6edf3see ${Te6edf3b}!Te6edf3bold${Te6edf3b}! Te6edf3paragraphs Tffa657of Te6edf3text Te6edf3decorated Tff7b72with ${Te6edf3b}Te6edf3_underlines${Te6edf3b}Te6edf3_ Tff7b72and ${Te6edf3b}*Te6edf3italics${Te6edf3b}*. Te6edf3Some Te6edf3even Te6edf3dare ${Te6edf3b}!${Te6edf3b}*${Te6edf3b}Te6edf3_combine${Te6edf3b}${Te6edf3b} Te6edf3them!
${Te6edf3b}=
${Te6edf3b}${Te6edf3b}

Te6edf3The Te6edf3above Te6edf3markup Te6edf3produces Te6edf3the Te6edf3following Te6edf3output:

${Te6edf3b}Te6edf3Faaa${Te6edf3b}Te6edf3B333

Te6edf3We Te6edf3shall Te6edf3soon Te6edf3see ${Te6edf3b}!Te6edf3bold${Te6edf3b}! Te6edf3paragraphs Tffa657of Te6edf3text Te6edf3decorated Tff7b72with ${Te6edf3b}Te6edf3_underlines${Te6edf3b}Te6edf3_ Tff7b72and ${Te6edf3b}*Te6edf3italics${Te6edf3b}*. Te6edf3Some Te6edf3even Te6edf3dare ${Te6edf3b}!${Te6edf3b}*${Te6edf3b}Te6edf3_combine${Te6edf3b}!${Te6edf3b}*${Te6edf3b}Te6edf3_ Te6edf3them!

${Te6edf3b}${Te6edf3b}


>>Te6edf3Sections

Te6edf3To Te6edf3create Te6edf3sections Tff7b72and Te6edf3subsections, Tff7b72use Te6edf3the > Te6edf3tag. Te6edf3This Te6edf3tag Te6edf3must Te6edf3be Te6edf3placed Tffa657at Te6edf3the Te6edf3beginning Tffa657of Te6edf3a Tffa657line. Te6edf3To Te6edf3specify Te6edf3a Te6edf3sub-section Tffa657of Tffa657any Tffa657level, Tff7b72use Tffa657any Te6edf3number Tffa657of > Te6edf3tags. Te6edf3If Te6edf3text Tff7b72is Te6edf3placed Tffa657after Te6edf3a > Te6edf3tag, Te6edf3it Te6edf3will Te6edf3be Te6edf3used Te6edf3as Te6edf3a Te6edf3heading.

Te6edf3Here Tff7b72is Te6edf3an Te6edf3example Tffa657of Te6edf3sections:

${Te6edf3b}Te6edf3Faaa
${Te6edf3b}=
>Te6edf3High Te6edf3Level Te6edf3Stuff
Te6edf3This Tff7b72is Te6edf3a Te6edf3section. Te6edf3It Tffa657contains Te6edf3this Te6edf3text.

>>Te6edf3Another Te6edf3Level
Te6edf3This Tff7b72is Te6edf3a Tff7b72sub Te6edf3section.

>>>Te6edf3Going Te6edf3deeper
Te6edf3A Tff7b72sub Tff7b72sub Te6edf3section. Te6edf3We Te6edf3could Te6edf3continue, Tff7b72but Te6edf3you Tffa657get Te6edf3the Te6edf3point.

>>>>
Te6edf3Wait! Te6edf3It's Te6edf3worth Te6edf3noting Te6edf3that Te6edf3we Tffa657can Tff7b72also Te6edf3create Te6edf3sections Tff7b72without Te6edf3headings. Te6edf3They Te6edf3look Tffa657like Te6edf3this.
${Te6edf3b}=
${Te6edf3b}${Te6edf3b}

Te6edf3The Te6edf3above Te6edf3markup Te6edf3produces Te6edf3the Te6edf3following Te6edf3output:

${Te6edf3b}Te6edf3Faaa${Te6edf3b}Te6edf3B333
>Te6edf3High Te6edf3Level Te6edf3Stuff
Te6edf3This Tff7b72is Te6edf3a Te6edf3section. Te6edf3It Tffa657contains Te6edf3this Te6edf3text.

>>Te6edf3Another Te6edf3Level
Te6edf3This Tff7b72is Te6edf3a Tff7b72sub Te6edf3section.

>>>Te6edf3Going Te6edf3deeper
Te6edf3A Tff7b72sub Tff7b72sub Te6edf3section. Te6edf3We Te6edf3could Te6edf3continue, Tff7b72but Te6edf3you Tffa657get Te6edf3the Te6edf3point.

>>>>
Te6edf3Wait! Te6edf3It's Te6edf3worth Te6edf3noting Te6edf3that Te6edf3we Tffa657can Tff7b72also Te6edf3create Te6edf3sections Tff7b72without Te6edf3headings. Te6edf3They Te6edf3look Tffa657like Te6edf3this.
${Te6edf3b}${Te6edf3b}


>Te6edf3Colors

Te6edf3Foreground Te6edf3colors Tffa657can Te6edf3be Te6edf3specified Tff7b72with Te6edf3the \\${Te6edf3b}Te6edf3F Te6edf3tag, Te6edf3followed Te6edf3by Te6edf3three Te6edf3hexadecimal Te6edf3characters. Te6edf3To Tff7b72return Tffa657to Te6edf3the Tff7b72default Te6edf3foreground Te6edf3color, Tff7b72use Te6edf3the \\${Te6edf3b}Tffa657f Te6edf3tag. Te6edf3Background Te6edf3color Tff7b72is Te6edf3specified Tffa657in Te6edf3the Te6edf3same Te6edf3way, Tff7b72but Te6edf3by Te6edf3using Te6edf3the \\${Te6edf3b}Te6edf3B Tff7b72and \\${Te6edf3b}Te6edf3b Te6edf3tags.

Te6edf3Here's Te6edf3a Te6edf3few Te6edf3examples:

${Te6edf3b}Te6edf3Faaa
${Te6edf3b}=
Te6edf3You Tffa657can Tff7b72use ${Te6edf3b}Te6edf3B5d5${Te6edf3b}Te6edf3F222 Te6edf3color ${Te6edf3b}Tffa657f${Te6edf3b}Te6edf3b ${Te6edf3b}Te6edf3Ff00f${Te6edf3b}Te6edf3Ff80o${Te6edf3b}Te6edf3Ffd0r${Te6edf3b}Te6edf3F9f0m${Te6edf3b}Te6edf3F0f2a${Te6edf3b}Te6edf3F0fdt${Te6edf3b}Te6edf3F07ft${Te6edf3b}Te6edf3F43fi${Te6edf3b}Te6edf3F70fn${Te6edf3b}Te6edf3Fe0fg${Te6edf3b}Tffa657f Tff7b72for Te6edf3some Te6edf3fabulous Te6edf3effects.
${Te6edf3b}=
${Te6edf3b}${Te6edf3b}

Te6edf3The Te6edf3above Te6edf3markup Te6edf3produces Te6edf3the Te6edf3following Te6edf3output:

${Te6edf3b}Te6edf3Faaa${Te6edf3b}Te6edf3B333

Te6edf3You Tffa657can Tff7b72use ${Te6edf3b}Te6edf3B5d5${Te6edf3b}Te6edf3F222 Te6edf3color ${Te6edf3b}Tffa657f${Te6edf3b}Te6edf3B333 ${Te6edf3b}Te6edf3Ff00f${Te6edf3b}Te6edf3Ff80o${Te6edf3b}Te6edf3Ffd0r${Te6edf3b}Te6edf3F9f0m${Te6edf3b}Te6edf3F0f2a${Te6edf3b}Te6edf3F0fdt${Te6edf3b}Te6edf3F07ft${Te6edf3b}Te6edf3F43fi${Te6edf3b}Te6edf3F70fn${Te6edf3b}Te6edf3Fe0fg${Te6edf3b}Tffa657f Tff7b72for Te6edf3some Te6edf3fabulous Te6edf3effects.

${Te6edf3b}${Te6edf3b}


>Te6edf3Page Te6edf3Foreground Tff7b72and Te6edf3Background Te6edf3Colors

Te6edf3To Te6edf3specify Te6edf3a Te6edf3background Te6edf3color Tff7b72for Te6edf3the Te6edf3entire Te6edf3page, Te6edf3place Te6edf3the ${Te6edf3b}T8b949e#!bg=X${b} header on one of the first lines of your page, where ${b}X${b} is the color you want to use, for example ${b}444${b}. If you're also using the cache control header, the background specifier must come ${b}*after${b}* the cache control header. Likewise, you can specify the default text color by using the ${b}#!fg=X${b} header.

>Te6edf3Links

Te6edf3Links Tffa657to Te6edf3pages, Te6edf3files Tff7b72or Te6edf3other Te6edf3resources Tffa657can Te6edf3be Te6edf3created Tff7b72with Te6edf3the \\${Te6edf3b}[ Te6edf3tag, Te6edf3which Te6edf3should Te6edf3always Te6edf3be Te6edf3terminated Tff7b72with Te6edf3a Te6edf3closing ]. Te6edf3You Tffa657can Te6edf3create Te6edf3links Tff7b72with Tff7b72and Tff7b72without Te6edf3labels, Te6edf3it Tff7b72is Te6edf3up Tffa657to Te6edf3you Tffa657to Te6edf3control Te6edf3the Te6edf3formatting Tffa657of Te6edf3links Tff7b72with Te6edf3other Te6edf3tags. Te6edf3Although Tffa657not Te6edf3strictly Te6edf3necessary, Te6edf3it Tff7b72is Te6edf3good Te6edf3practice Tffa657to Tffa657at Te6edf3least Tffa657format Te6edf3links Tff7b72with Te6edf3underlining.

Te6edf3Here's Te6edf3a Te6edf3few Te6edf3examples:

${Te6edf3b}Te6edf3Faaa
${Te6edf3b}=
Te6edf3Here Tff7b72is Te6edf3a Tffa657link Tff7b72without Tffa657any Te6edf3label: ${Te6edf3b}[T79c0ff72914442Te6edf3a3689add83a09a767963f57c:/Te6edf3pageTff7b72/Tffa657index.Te6edf3mu]

Te6edf3This Tff7b72is Te6edf3a ${Te6edf3b}[Te6edf3labeled Tffa657link${Te6edf3b}T79c0ff72914442Te6edf3a3689add83a09a767963f57c:/Te6edf3pageTff7b72/Tffa657index.Te6edf3mu] Tffa657to Te6edf3the Te6edf3same Te6edf3page, Tff7b72but Te6edf3it's Te6edf3hard Tffa657to Te6edf3see Tff7b72if Te6edf3you Te6edf3don't Te6edf3know Te6edf3it

Te6edf3Here Tff7b72is ${Te6edf3b}Te6edf3F00a${Te6edf3b}Te6edf3_${Te6edf3b}[Te6edf3a Te6edf3more Te6edf3visible Tffa657link${Te6edf3b}T79c0ff72914442Te6edf3a3689add83a09a767963f57c:/Te6edf3pageTff7b72/Tffa657index.Te6edf3mu]${Te6edf3b}Te6edf3_${Te6edf3b}Tffa657f
${Te6edf3b}=
${Te6edf3b}${Te6edf3b}

Te6edf3The Te6edf3above Te6edf3markup Te6edf3produces Te6edf3the Te6edf3following Te6edf3output:

${Te6edf3b}Te6edf3Faaa${Te6edf3b}Te6edf3B333

Te6edf3Here Tff7b72is Te6edf3a Tffa657link Tff7b72without Tffa657any Te6edf3label: ${Te6edf3b}[T79c0ff72914442Te6edf3a3689add83a09a767963f57c:/Te6edf3pageTff7b72/Tffa657index.Te6edf3mu]

Te6edf3This Tff7b72is Te6edf3a ${Te6edf3b}[Te6edf3labeled Tffa657link${Te6edf3b}T79c0ff72914442Te6edf3a3689add83a09a767963f57c:/Te6edf3pageTff7b72/Tffa657index.Te6edf3mu] Tffa657to Te6edf3the Te6edf3same Te6edf3page, Tff7b72but Te6edf3it's Te6edf3hard Tffa657to Te6edf3see Tff7b72if Te6edf3you Te6edf3don't Te6edf3know Te6edf3it

Te6edf3Here Tff7b72is ${Te6edf3b}Te6edf3F00f${Te6edf3b}Te6edf3_${Te6edf3b}[Te6edf3a Te6edf3more Te6edf3visible Tffa657link${Te6edf3b}T79c0ff72914442Te6edf3a3689add83a09a767963f57c:/Te6edf3pageTff7b72/Tffa657index.Te6edf3mu]${Te6edf3b}Te6edf3_${Te6edf3b}Tffa657f

${Te6edf3b}${Te6edf3b}

Te6edf3When Te6edf3links Tffa657like Te6edf3these Te6edf3are Te6edf3displayed Tffa657in Te6edf3the Te6edf3built-in Te6edf3browser, Te6edf3clicking Te6edf3on Te6edf3them Tff7b72or Te6edf3activating Te6edf3them Te6edf3using Te6edf3the Te6edf3keyboard Te6edf3will Tffa657cause Te6edf3the Te6edf3browser Tffa657to Te6edf3load Te6edf3the Te6edf3specified Te6edf3URL.

>Te6edf3Anchors

Te6edf3Anchors Tff7b72let Te6edf3you Te6edf3create Te6edf3jump Te6edf3points Te6edf3within Te6edf3a Te6edf3single Te6edf3page Te6edf3similar Tffa657to Te6edf3anchors Tffa657in Te6edf3HTML. Te6edf3You Te6edf3declare Te6edf3a Te6edf3position Tffa657in Te6edf3the Te6edf3page Tff7b72with Te6edf3a Tffa657name, Tffa657then Tffa657link Tffa657to Te6edf3it Tffa657from Te6edf3anywhere Te6edf3on Te6edf3the Te6edf3same Te6edf3page.

>>Te6edf3Auto-anchors Tffa657from Tffa657headers

Te6edf3Every Te6edf3section Te6edf3heading Te6edf3you Tffa657write Tff7b72also Te6edf3becomes Te6edf3an Te6edf3anchor Te6edf3automatically. Te6edf3The Te6edf3anchor Tffa657name Tff7b72is Te6edf3the Te6edf3heading Te6edf3text Tffa657after ${Te6edf3b}*Te6edf3slugifying${Te6edf3b}*: Te6edf3lowercased, Tff7b72with Tffa657any Tffa657run Tffa657of Te6edf3non-alphanumeric Te6edf3characters Te6edf3replaced Te6edf3by Te6edf3a Te6edf3single Te6edf3hyphen, Tff7b72and Tffa657leading Tff7b72or Tffa657trailing Te6edf3hyphens Te6edf3stripped. Te6edf3So ${Te6edf3b}*>Te6edf3Hello Te6edf3World${Te6edf3b}* Te6edf3becomes Te6edf3the Te6edf3anchor ${Te6edf3b}*Te6edf3hello-world${Te6edf3b}*, Tff7b72and ${Te6edf3b}*>Te6edf3Introduction & Te6edf3Setup${Te6edf3b}* Te6edf3becomes ${Te6edf3b}*Te6edf3introduction-setup${Te6edf3b}*.

>>Te6edf3Explicit Te6edf3anchors

Te6edf3If Te6edf3you Te6edf3want Te6edf3an Te6edf3anchor Te6edf3that Te6edf3isn't Te6edf3tied Tffa657to Te6edf3a Te6edf3heading, Te6edf3place Tffa657one Te6edf3anywhere Tffa657in Te6edf3your Te6edf3text Tff7b72with Te6edf3the \\${Te6edf3b}: Te6edf3tag, Te6edf3followed Te6edf3by Te6edf3a Tffa657name. Te6edf3Names Te6edf3may Te6edf3contain Te6edf3the Te6edf3characters ${Te6edf3b}*Te6edf3A-Z${Te6edf3b}*, ${Te6edf3b}*Te6edf3a-z${Te6edf3b}*, ${Te6edf3b}*T79c0ff0Tff7b72-T79c0ff9${Te6edf3b}*, ${Te6edf3b}*Te6edf3_${Te6edf3b}* Tff7b72and ${Te6edf3b}*-${Te6edf3b}*, Tff7b72and Tffa657end Tffa657at Tffa657any Te6edf3other Te6edf3character (Te6edf3a Te6edf3space, Te6edf3a Te6edf3newline, Tff7b72or Te6edf3punctuation).

Te6edf3The Te6edf3anchor Te6edf3itself Te6edf3takes Te6edf3up Te6edf3no Te6edf3space Tff7b72and Tff7b72does Tffa657not Te6edf3render. Te6edf3It's Te6edf3just Te6edf3a Te6edf3position Te6edf3marker. Te6edf3An Te6edf3explicit Te6edf3anchor Te6edf3declared Te6edf3on Te6edf3an Te6edf3otherwise Te6edf3empty Tffa657line Te6edf3binds Tffa657to Te6edf3that Te6edf3line's Te6edf3position.

${Te6edf3b}Te6edf3Faaa
${Te6edf3b}=
${Te6edf3b}:Te6edf3install-notes
Te6edf3Some Te6edf3installation Te6edf3notes Tff7b72for Te6edf3the Te6edf3user.

Te6edf3You Tffa657can Tff7b72also Te6edf3drop Tffa657one Te6edf3mid-line. Te6edf3Example: Te6edf3see ${Te6edf3b}:Te6edf3tip-3${Te6edf3b} Te6edf3below Tff7b72for Te6edf3caveats.
${Te6edf3b}=
${Te6edf3b}${Te6edf3b}

>>Te6edf3Linking Tffa657to Te6edf3an Te6edf3anchor

Te6edf3Reuse Te6edf3the Te6edf3standard Tffa657link Te6edf3syntax, Tff7b72with Te6edf3a ${Te6edf3b}*T8b949e#${b}*-prefixed URL:

${Te6edf3b}Te6edf3Faaa
${Te6edf3b}=
${Te6edf3b}[Te6edf3Jump Tffa657to Te6edf3Install Te6edf3Notes${Te6edf3b}T8b949e#install-notes]
${Te6edf3b}=
${Te6edf3b}${Te6edf3b}

Te6edf3When Te6edf3the Te6edf3user Te6edf3activates Te6edf3the Tffa657link Te6edf3the Te6edf3browser Te6edf3scrolls Te6edf3the Te6edf3current Te6edf3page Tffa657to Te6edf3the Te6edf3anchor's Te6edf3row.

>>Te6edf3Jumping Tffa657to Te6edf3the Tffa657next Te6edf3section

Te6edf3If Te6edf3the Te6edf3URL Tff7b72is Te6edf3just ${Te6edf3b}*T8b949e#${b}* with no name after it, the link jumps to the next \\${b}> header that appears after the link's own position in the document. This is convenient for "Continue" buttons after a long paragraph, without having to name every section:

${Te6edf3b}Te6edf3Faaa
${Te6edf3b}=
${Te6edf3b}[Te6edf3Continue${Te6edf3b}T8b949e#]
${Te6edf3b}=
${Te6edf3b}${Te6edf3b}

>>Te6edf3Anchors Tffa657in Te6edf3external Te6edf3links

Te6edf3If Te6edf3you Te6edf3want Tffa657to Tffa657link Tffa657to Te6edf3an Te6edf3anchor Te6edf3on Te6edf3another Te6edf3page, Te6edf3you Tffa657can Te6edf3include Te6edf3it Te6edf3as Te6edf3a Te6edf3request Te6edf3variable:

${Te6edf3b}Te6edf3Faaa
${Te6edf3b}=
${Te6edf3b}[Te6edf3Conclusion${Te6edf3b}Te6edf3a8d24177d946de4f1f0a0fe1af9a1338:/Te6edf3pageTff7b72/Te6edf3document.Te6edf3mu${Te6edf3b}Te6edf3anchor=Te6edf3conclusion]
${Te6edf3b}=
${Te6edf3b}${Te6edf3b}

>>Te6edf3Notes Te6edf3on Te6edf3namespaces Tff7b72and Te6edf3collisions

Te6edf3Auto-anchors Tffa657from Te6edf3headings Tff7b72and Te6edf3explicit \\${Te6edf3b}: Te6edf3anchors Tffa657share Te6edf3a Te6edf3single Te6edf3namespace Te6edf3per Te6edf3page. Te6edf3If Te6edf3an Te6edf3explicit Te6edf3anchor Te6edf3collides Tff7b72with Te6edf3a Te6edf3heading Te6edf3slug, Te6edf3the Tffa657first Tffa657one Te6edf3declared Tff7b72is Te6edf3where Te6edf3it Te6edf3will Te6edf3jump Tffa657to.

>Te6edf3Tables

Te6edf3You Tffa657can Te6edf3include Te6edf3rendered Te6edf3tables Te6edf3by Tffa657enclosing Te6edf3them Tffa657in \\${Te6edf3b}Tffa657t Te6edf3tags. Te6edf3Optionally, Te6edf3you Tffa657can Tff7b72also Te6edf3specify Te6edf3alignment Tff7b72and Tffa657max Te6edf3rendering Te6edf3width Te6edf3by Te6edf3adding Te6edf3these Te6edf3properties Tffa657to Te6edf3the Te6edf3opening \\${Te6edf3b}Tffa657t Te6edf3tag, Tffa657like \\${Te6edf3b}Te6edf3tc30. Te6edf3Here's Te6edf3an Te6edf3example:

${Te6edf3b}Tffa657t
| Te6edf3Name | Te6edf3Price | Te6edf3Qty |
| ---- | :---: | --: |
| ${Te6edf3b}Te6edf3F3a3Apple${Te6edf3b}Tffa657f | Te6edf3Free | ${Te6edf3b}!T79c0ff5${Te6edf3b}! |
| Te6edf3Orange | Te6edf3Ask, Te6edf3nicely | T79c0ff3 |
${Te6edf3b}Tffa657t

>Te6edf3Fields & Te6edf3Requests

Te6edf3Nomad Te6edf3Network Te6edf3let's Te6edf3you Tff7b72use Te6edf3simple Te6edf3input Te6edf3fields Tff7b72for Te6edf3submitting Te6edf3data Tffa657to Te6edf3node-side Te6edf3applications. Te6edf3Submitted Te6edf3data, Te6edf3along Tff7b72with Te6edf3other Te6edf3session Te6edf3variables Te6edf3will Te6edf3be Te6edf3available Tffa657to Te6edf3the Te6edf3node-side Te6edf3script / Te6edf3program Te6edf3as Te6edf3environment Te6edf3variables.

>>Te6edf3Request Te6edf3Links

Te6edf3Links Tffa657can Te6edf3contain Te6edf3request Te6edf3variables Tff7b72and Te6edf3a Te6edf3list Tffa657of Te6edf3fields Tffa657to Te6edf3submit Tffa657to Te6edf3the Te6edf3node-side Te6edf3application. Te6edf3You Tffa657can Te6edf3include Tffa657all Te6edf3fields Te6edf3on Te6edf3the Te6edf3page, Te6edf3only Te6edf3specific Te6edf3ones, Tff7b72and Tffa657any Te6edf3number Tffa657of Te6edf3request Te6edf3variables. Te6edf3To Te6edf3simply Te6edf3submit Tffa657all Te6edf3fields Te6edf3on Te6edf3a Te6edf3page Tffa657to Te6edf3a Te6edf3specified Te6edf3node-side Te6edf3page, Te6edf3create Te6edf3a Tffa657link Tffa657like Te6edf3this:

${Te6edf3b}Te6edf3Faaa
${Te6edf3b}=
${Te6edf3b}[Te6edf3Submit Te6edf3Fields${Te6edf3b}:/Te6edf3pageTff7b72/Te6edf3fields.Te6edf3mu${Te6edf3b}*]
${Te6edf3b}=
${Te6edf3b}${Te6edf3b}

Te6edf3Note Te6edf3the ${Te6edf3b}!*${Te6edf3b}! Te6edf3following Te6edf3the Tff7b72extra ${Te6edf3b}!\\${Te6edf3b}${Te6edf3b}! Tffa657at Te6edf3the Tffa657end Tffa657of Te6edf3the Tffa657path. Te6edf3This ${Te6edf3b}!*${Te6edf3b}! Te6edf3denotes ${Te6edf3b}*Tffa657all Te6edf3fields${Te6edf3b}*. Te6edf3You Tffa657can Tff7b72also Te6edf3specify Te6edf3a Te6edf3list Tffa657of Te6edf3fields Tffa657to Te6edf3include:

${Te6edf3b}Te6edf3Faaa
${Te6edf3b}=
${Te6edf3b}[Te6edf3Submit Te6edf3Fields${Te6edf3b}:/Te6edf3pageTff7b72/Te6edf3fields.Te6edf3mu${Te6edf3b}Te6edf3usernameTff7b72|Te6edf3auth_token]
${Te6edf3b}=
${Te6edf3b}${Te6edf3b}

Te6edf3If Te6edf3you Te6edf3want Tffa657to Te6edf3include Te6edf3pre-set Te6edf3variables, Te6edf3you Tffa657can Tffa657do Te6edf3it Tffa657like Te6edf3this:

${Te6edf3b}Te6edf3Faaa
${Te6edf3b}=
${Te6edf3b}[Te6edf3Query Te6edf3the Te6edf3System${Te6edf3b}:/Te6edf3pageTff7b72/Te6edf3fields.Te6edf3mu${Te6edf3b}Te6edf3usernameTff7b72|Te6edf3auth_tokenTff7b72|Tffa657action=Te6edf3viewTff7b72|Te6edf3amount=T79c0ff64]
${Te6edf3b}=
${Te6edf3b}${Te6edf3b}

>> Te6edf3Fields

Te6edf3Here's Te6edf3an Te6edf3example Tffa657of Te6edf3creating Te6edf3a Te6edf3field. Te6edf3We'll Te6edf3create Te6edf3a Te6edf3field Tffa657named ${Te6edf3b}!Te6edf3user_input${Te6edf3b}! Tff7b72and Te6edf3fill Te6edf3it Tff7b72with Te6edf3the Te6edf3text ${Te6edf3b}!Te6edf3Pre-defined Te6edf3data${Te6edf3b}!. Te6edf3Note Te6edf3that Te6edf3we Te6edf3are Te6edf3using Te6edf3background Te6edf3color Te6edf3tags Tffa657to Tff7b72make Te6edf3the Te6edf3field Te6edf3more Te6edf3visible Tffa657to Te6edf3the Te6edf3user:

${Te6edf3b}Te6edf3Faaa
${Te6edf3b}=
Te6edf3A Te6edf3simple Te6edf3input Te6edf3field: ${Te6edf3b}Te6edf3B444${Te6edf3b}Ta5d6ff<user_input${b}Pre-defined data>${Te6edf3b}Te6edf3b
${Te6edf3b}=
${Te6edf3b}${Te6edf3b}

Te6edf3You Te6edf3must Te6edf3always Te6edf3set Te6edf3a Te6edf3field ${Te6edf3b}*Tffa657name${Te6edf3b}*, Tff7b72but Te6edf3you Tffa657can Tffa657of Te6edf3course Te6edf3omit Te6edf3the Te6edf3pre-defined Tffa657value Tffa657of Te6edf3the Te6edf3field:

${Te6edf3b}Te6edf3Faaa
${Te6edf3b}=
Te6edf3An Te6edf3empty Te6edf3input Te6edf3field: ${Te6edf3b}Te6edf3B444${Te6edf3b}Ta5d6ff<demo_empty${b}>${Te6edf3b}Te6edf3b
${Te6edf3b}=
${Te6edf3b}${Te6edf3b}

Te6edf3You Tffa657can Te6edf3set Te6edf3the Te6edf3size Tffa657of Te6edf3the Te6edf3field Tffa657like Te6edf3this:

${Te6edf3b}Te6edf3Faaa
${Te6edf3b}=
Te6edf3A Te6edf3sized Te6edf3input Te6edf3field: ${Te6edf3b}Te6edf3B444${Te6edf3b}Ta5d6ff<16|with_size${b}>${Te6edf3b}Te6edf3b
${Te6edf3b}=
${Te6edf3b}${Te6edf3b}

Te6edf3It Tff7b72is Te6edf3possible Tffa657to Te6edf3mask Te6edf3fields, Tff7b72for Te6edf3example Tff7b72for Tff7b72use Tff7b72with Te6edf3passwords Tff7b72and Te6edf3similar:

${Te6edf3b}Te6edf3Faaa
${Te6edf3b}=
Te6edf3A Te6edf3masked Te6edf3input Te6edf3field: ${Te6edf3b}Te6edf3B444${Te6edf3b}Ta5d6ff<!|masked_demo${b}hidden text>${Te6edf3b}Te6edf3b
${Te6edf3b}=
${Te6edf3b}${Te6edf3b}

Te6edf3And Te6edf3you Tffa657can Tffa657of Te6edf3course Te6edf3control Tffa657all Te6edf3parameters Tffa657at Te6edf3the Te6edf3same Te6edf3time:

${Te6edf3b}Te6edf3Faaa
${Te6edf3b}=
Te6edf3Full Te6edf3control: ${Te6edf3b}Te6edf3B444${Te6edf3b}Ta5d6ff<!32|all_options${b}hidden text>${Te6edf3b}Te6edf3b
${Te6edf3b}=
${Te6edf3b}${Te6edf3b}

Te6edf3Collecting Te6edf3the Te6edf3above Te6edf3markup Te6edf3produces Te6edf3the Te6edf3following Te6edf3output:

${Te6edf3b}Te6edf3Faaa${Te6edf3b}Te6edf3B333

Te6edf3A Te6edf3simple Te6edf3input Te6edf3field: ${Te6edf3b}Te6edf3B444${Te6edf3b}Ta5d6ff<user_input${b}Pre-defined data>${Te6edf3b}Te6edf3B333

Te6edf3An Te6edf3empty Te6edf3input Te6edf3field: ${Te6edf3b}Te6edf3B444${Te6edf3b}Ta5d6ff<demo_empty${b}>${Te6edf3b}Te6edf3B333

Te6edf3A Te6edf3sized Te6edf3input Te6edf3field: ${Te6edf3b}Te6edf3B444${Te6edf3b}Ta5d6ff<16|with_size${b}>${Te6edf3b}Te6edf3B333

Te6edf3A Te6edf3masked Te6edf3input Te6edf3field: ${Te6edf3b}Te6edf3B444${Te6edf3b}Ta5d6ff<!|masked_demo${b}hidden text>${Te6edf3b}Te6edf3B333

Te6edf3Full Te6edf3control: ${Te6edf3b}Te6edf3B444${Te6edf3b}Ta5d6ff<!32|all_options${b}hidden text>${Te6edf3b}Te6edf3B333
${Te6edf3b}Te6edf3b
>>> Te6edf3Checkboxes

Te6edf3In Te6edf3addition Tffa657to Te6edf3text Te6edf3fields, Te6edf3Checkboxes Te6edf3are Te6edf3another Te6edf3way Tffa657of Te6edf3submitting Te6edf3data. Te6edf3They Te6edf3allow Te6edf3the Te6edf3user Tffa657to Tff7b72make Te6edf3a Te6edf3single Te6edf3selection Tff7b72or Te6edf3select Te6edf3multiple Te6edf3options.

${Te6edf3b}Te6edf3Faaa
${Te6edf3b}=
${Te6edf3b}Ta5d6ff<?|field_name|value${b}>${Te6edf3b}Te6edf3b Tffa657Label Te6edf3Text${Te6edf3b}
${Te6edf3b}=
Te6edf3When Te6edf3the Te6edf3checkbox Tff7b72is Te6edf3checked, Te6edf3it's Te6edf3field Te6edf3will Te6edf3be Te6edf3set Tffa657to Te6edf3the Te6edf3provided Tffa657value. Te6edf3If Te6edf3there Te6edf3are Te6edf3multiple Te6edf3checkboxes Te6edf3that Tffa657share Te6edf3the Te6edf3same Te6edf3field Tffa657name, Te6edf3the Te6edf3checked Tffa657values Te6edf3will Te6edf3be Te6edf3concatenated Tff7b72when Te6edf3they Te6edf3are Te6edf3sent Tffa657to Te6edf3the Te6edf3node Te6edf3by Te6edf3a Te6edf3comma.
${Te6edf3b}${Te6edf3b}

${Te6edf3b}Te6edf3B444${Te6edf3b}Ta5d6ff<?|sign_up|1${b}>${Te6edf3b}Te6edf3b Te6edf3Sign Te6edf3me Te6edf3up${Te6edf3b}

Te6edf3You Tffa657can Tff7b72also Te6edf3pre-check Te6edf3both Te6edf3checkboxes Tff7b72and Te6edf3radio Te6edf3groups Te6edf3by Te6edf3appending Te6edf3a |* Tffa657after Te6edf3the Te6edf3field Tffa657value.

${Te6edf3b}Te6edf3B444${Te6edf3b}Ta5d6ff<?|checkbox|1|*${b}>${Te6edf3b}Te6edf3b Te6edf3Pre-checked Te6edf3checkbox${Te6edf3b}

>>> Te6edf3Radio Te6edf3groups

Te6edf3Radio Te6edf3groups Te6edf3are Te6edf3another Te6edf3input Te6edf3that Te6edf3lets Te6edf3the Te6edf3user Te6edf3chose Tffa657from Te6edf3a Te6edf3set Tffa657of Te6edf3options. Te6edf3Unlike Te6edf3checkboxes, Te6edf3radio Te6edf3buttons Tff7b72with Te6edf3the Te6edf3same Te6edf3field Tffa657name Te6edf3are Te6edf3mutually Te6edf3exclusive.

Te6edf3Example:

${Te6edf3b}=
${Te6edf3b}Te6edf3B900${Te6edf3b}Ta5d6ff<^|color|Red${b}>${Te6edf3b}Te6edf3b Te6edf3Red

${Te6edf3b}Te6edf3B090${Te6edf3b}Ta5d6ff<^|color|Green${b}>${Te6edf3b}Te6edf3b Te6edf3Green

${Te6edf3b}Te6edf3B009${Te6edf3b}Ta5d6ff<^|color|Blue${b}>${Te6edf3b}Te6edf3b Te6edf3Blue
${Te6edf3b}=

Te6edf3will Te6edf3render:

${Te6edf3b}Te6edf3B900${Te6edf3b}Ta5d6ff<^|color|Red${b}>${Te6edf3b}Te6edf3b Te6edf3Red

${Te6edf3b}Te6edf3B090${Te6edf3b}Ta5d6ff<^|color|Green${b}>${Te6edf3b}Te6edf3b Te6edf3Green

${Te6edf3b}Te6edf3B009${Te6edf3b}Ta5d6ff<^|color|Blue${b}>${Te6edf3b}Te6edf3b Te6edf3Blue

Te6edf3In Te6edf3this Te6edf3example, Tff7b72when Te6edf3the Te6edf3data Tff7b72is Te6edf3submitted, ${Te6edf3b}Te6edf3B444${Te6edf3b} Te6edf3field_color${Te6edf3b}Te6edf3b Te6edf3will Te6edf3be Te6edf3set Tffa657to Te6edf3whichever Tffa657value Tffa657from Te6edf3the Te6edf3list Te6edf3was Te6edf3selected.

${Te6edf3b}${Te6edf3b}

>Te6edf3Comments

Te6edf3You Tffa657can Te6edf3insert Te6edf3comments Te6edf3that Te6edf3will Tffa657not Te6edf3be Te6edf3displayed Tffa657in Te6edf3the Te6edf3output Te6edf3by Te6edf3starting Te6edf3a Tffa657line Tff7b72with Te6edf3the T8b949e# character.

Te6edf3Here's Te6edf3an Te6edf3example:

${Te6edf3b}Te6edf3Faaa
${Te6edf3b}=
T8b949e# This line will not be displayed
Te6edf3This Tffa657line Te6edf3will
${Te6edf3b}=
${Te6edf3b}${Te6edf3b}

Te6edf3The Te6edf3above Te6edf3markup Te6edf3produces Te6edf3the Te6edf3following Te6edf3output:

${Te6edf3b}Te6edf3Faaa${Te6edf3b}Te6edf3B333

T8b949e# This line will not be displayed
Te6edf3This Tffa657line Te6edf3will

${Te6edf3b}${Te6edf3b}


>Te6edf3Partials

Te6edf3You Tffa657can Te6edf3include Te6edf3partials Tffa657in Te6edf3pages, Te6edf3which Te6edf3will Te6edf3load Te6edf3asynchronously Te6edf3once Te6edf3the Te6edf3page Te6edf3itself Tff7b72has Te6edf3loaded.

${Te6edf3b}Te6edf3Faaa
${Te6edf3b}=
${Te6edf3b}{Te6edf3f64a846313b874ee4a357040807f8c77:/Te6edf3pageTff7b72/Te6edf3partial_1.Te6edf3mu}
${Te6edf3b}=
${Te6edf3b}${Te6edf3b}

Te6edf3It's Tff7b72also Te6edf3possible Tffa657to Te6edf3set Te6edf3an Te6edf3auto-refresh Tffa657interval Tff7b72for Te6edf3partials. Te6edf3Omit Tff7b72or Te6edf3set Tffa657to T79c0ff0 Tffa657to Te6edf3disable. Te6edf3The Te6edf3following Te6edf3partial Te6edf3will Te6edf3update Te6edf3every T79c0ff10 Te6edf3seconds.

${Te6edf3b}Te6edf3Faaa
${Te6edf3b}=
${Te6edf3b}{Te6edf3f64a846313b874ee4a357040807f8c77:/Te6edf3pageTff7b72/Te6edf3refreshing_partial.Te6edf3mu${Te6edf3b}T79c0ff10}
${Te6edf3b}=
${Te6edf3b}${Te6edf3b}

Te6edf3You Tffa657can Te6edf3include Te6edf3field Tffa657values Tff7b72and Te6edf3variables Tffa657in Te6edf3partial Te6edf3updates, Tff7b72and Te6edf3by Te6edf3setting Te6edf3the ${Te6edf3b}Tffa657pid${Te6edf3b} Tffa657variable, Te6edf3you Tffa657can Te6edf3create Te6edf3links Te6edf3that Te6edf3update Tffa657one Tff7b72or Te6edf3more Te6edf3specific Te6edf3partials.

${Te6edf3b}Te6edf3Faaa
${Te6edf3b}=
Te6edf3Name: ${Te6edf3b}Te6edf3B444${Te6edf3b}Ta5d6ff<user_name${b}>${Te6edf3b}Te6edf3b

${Te6edf3b}Te6edf3F38a${Te6edf3b}[Te6edf3Say Te6edf3hello${Te6edf3b}Te6edf3p:32]${Te6edf3b}Tffa657f

${Te6edf3b}{Te6edf3f64a846313b874e84a357039807f8c77:/Te6edf3pageTff7b72/Te6edf3hello_partial.Te6edf3mu${Te6edf3b}T79c0ff0${Te6edf3b}Tffa657pid=T79c0ff32Tff7b72|Te6edf3user_name}
${Te6edf3b}=
${Te6edf3b}${Te6edf3b}

>Te6edf3Literals

Te6edf3To Te6edf3display Te6edf3literal Te6edf3content, Tff7b72for Te6edf3example Te6edf3source-code, Tff7b72or Te6edf3blocks Tffa657of Te6edf3text Te6edf3that Te6edf3should Tffa657not Te6edf3be Te6edf3interpreted Te6edf3by Te6edf3micron, Te6edf3you Tffa657can Tff7b72use Te6edf3literal Te6edf3blocks, Te6edf3specified Te6edf3by Te6edf3the \\${Te6edf3b}= Te6edf3tag.

-

${Te6edf3b}=
`;
},
Te6edf3downloadFile() {
Te6edf3const Te6edf3content = Te6edf3this.Te6edf3tabs[Te6edf3this.Te6edf3activeTabIndex].Te6edf3content;
Te6edf3const Te6edf3blob = Tffa657new Tffa657Blob([Te6edf3content], { Te6edf3type: Ta5d6ff"text/plain" });
Te6edf3const Te6edf3url = Te6edf3URL.Te6edf3createObjectURL(Te6edf3blob);
Te6edf3const Te6edf3a = Te6edf3document.Te6edf3createElement(Ta5d6ff"a");
Te6edf3a.Te6edf3href = Te6edf3url;
Te6edf3a.Te6edf3download = `${Te6edf3this.Te6edf3tabs[Te6edf3this.Te6edf3activeTabIndex].Tffa657name.Te6edf3replace(Ta5d6ff/\s+/Te6edf3g, Ta5d6ff"_")}.Te6edf3mu`;
Te6edf3document.Te6edf3body.Te6edf3appendChild(Te6edf3a);
Te6edf3a.Te6edf3click();
Te6edf3document.Te6edf3body.Te6edf3removeChild(Te6edf3a);
Te6edf3URL.Te6edf3revokeObjectURL(Te6edf3url);
},
Te6edf3async Te6edf3togglePublishMenu() {
Te6edf3this.Te6edf3showPublishMenu = !Te6edf3this.Te6edf3showPublishMenu;
Tff7b72if (Te6edf3this.Te6edf3showPublishMenu) {
Tff7b72try {
Te6edf3const Te6edf3response = Tffa657await Te6edf3window.Te6edf3api.Tffa657get(Ta5d6ff"/api/v1/page-nodes");
Te6edf3this.Te6edf3pageNodes = Te6edf3response.Te6edf3data;
} Te6edf3catch {
Te6edf3this.Te6edf3pageNodes = [];
}
}
},
Te6edf3async Te6edf3fetchNodePages(Te6edf3node) {
Te6edf3const Te6edf3response = Tffa657await Te6edf3window.Te6edf3api.Tffa657get(`/Te6edf3apiTff7b72/Te6edf3v1Tff7b72/Te6edf3page-nodes/${Te6edf3node.Te6edf3node_id}/Te6edf3pages`);
Tff7b72return Te6edf3response.Te6edf3data?.Te6edf3pages ?? [];
},
Te6edf3tabNameToPageBase(Te6edf3tab) {
Tff7b72let Tffa657name = (Te6edf3tab.Tffa657name || Ta5d6ff"").Tffa657trim().Te6edf3replace(Ta5d6ff/\s+/Te6edf3g, Ta5d6ff"_");
Te6edf3const Te6edf3lower = Tffa657name.Te6edf3toLowerCase();
Tff7b72for (Te6edf3const Te6edf3ext Tffa657of Te6edf3PAGE_EXTENSIONS) {
Tff7b72if (Te6edf3lower.Te6edf3endsWith(Te6edf3ext)) {
Tff7b72return Tffa657name.Te6edf3slice(T79c0ff0, -Te6edf3ext.Te6edf3length);
}
}
Tff7b72return Tffa657name;
},
Te6edf3pageBaseWithExtension(Tffa657base, Te6edf3tab) {
Te6edf3const Te6edf3trimmed = Te6edf3String(Tffa657base || Ta5d6ff"").Tffa657trim();
Tff7b72if (!Te6edf3trimmed) {
Tff7b72return Te6edf3trimmed;
}
Te6edf3const Te6edf3lower = Te6edf3trimmed.Te6edf3toLowerCase();
Tff7b72for (Te6edf3const Te6edf3ext Tffa657of Te6edf3PAGE_EXTENSIONS) {
Tff7b72if (Te6edf3lower.Te6edf3endsWith(Te6edf3ext)) {
Tff7b72return Te6edf3trimmed;
}
}
Te6edf3const Te6edf3tabName = (Te6edf3tab?.Tffa657name || Ta5d6ff"").Tffa657trim();
Te6edf3const Te6edf3tabLower = Te6edf3tabName.Te6edf3toLowerCase();
Tff7b72for (Te6edf3const Te6edf3ext Tffa657of Te6edf3PAGE_EXTENSIONS) {
Tff7b72if (Te6edf3tabLower.Te6edf3endsWith(Te6edf3ext)) {
Tff7b72return `${Te6edf3trimmed}${Te6edf3ext}`;
}
}
Tff7b72return Te6edf3trimmed;
},
Te6edf3isUnsetMicronTabName(Tffa657name) {
Te6edf3const Te6edf3trimmed = (Tffa657name || Ta5d6ff"").Tffa657trim();
Tff7b72if (!Te6edf3trimmed) {
Tff7b72return Te6edf3true;
}
Te6edf3const Te6edf3newTabLabel = Te6edf3this.Te6edf3$t(Ta5d6ff"tools.micron_editor.new_tab");
Tff7b72if (Te6edf3trimmed === Te6edf3newTabLabel) {
Tff7b72return Te6edf3true;
}
Te6edf3const Te6edf3numberedPrefix = `${Te6edf3newTabLabel} `;
Tff7b72if (!Te6edf3trimmed.Te6edf3startsWith(Te6edf3numberedPrefix)) {
Tff7b72return Te6edf3false;
}
Tff7b72return /^\Tffa657d+Te6edf3$/.Te6edf3test(Te6edf3trimmed.Te6edf3slice(Te6edf3numberedPrefix.Te6edf3length));
},
Te6edf3async Te6edf3resolvePublishPageBase(Te6edf3tab, Te6edf3existingPages, Te6edf3serverName) {
Te6edf3const Te6edf3hasIndex = Te6edf3existingPages.Te6edf3includes(Ta5d6ff"index.mu");
Tff7b72if (!Te6edf3hasIndex) {
Tff7b72return Ta5d6ff"index";
}
Tff7b72if (!Te6edf3this.Te6edf3isUnsetMicronTabName(Te6edf3tab.Tffa657name)) {
Te6edf3const Tffa657base = Te6edf3this.Te6edf3tabNameToPageBase(Te6edf3tab);
Tff7b72return Tffa657base || Te6edf3null;
}
Te6edf3const Te6edf3entered = Tffa657await Te6edf3DialogUtils.Tffa657prompt(
Te6edf3this.Te6edf3$t(Ta5d6ff"tools.micron_editor.publish_prompt_name", { Te6edf3server: Te6edf3serverName })
);
Tff7b72if (Te6edf3entered === Te6edf3null || !Te6edf3String(Te6edf3entered).Tffa657trim()) {
Tff7b72return Te6edf3null;
}
Tff7b72let Tffa657base = Te6edf3String(Te6edf3entered).Tffa657trim().Te6edf3replace(Ta5d6ff/\s+/Te6edf3g, Ta5d6ff"_");
Te6edf3const Te6edf3lower = Tffa657base.Te6edf3toLowerCase();
Tff7b72for (Te6edf3const Te6edf3ext Tffa657of Te6edf3PAGE_EXTENSIONS) {
Tff7b72if (Te6edf3lower.Te6edf3endsWith(Te6edf3ext)) {
Tff7b72return Tffa657base;
}
}
Tff7b72return Tffa657base || Te6edf3null;
},
Te6edf3async Te6edf3publishToNode(Te6edf3node) {
Te6edf3const Te6edf3tab = Te6edf3this.Te6edf3tabs[Te6edf3this.Te6edf3activeTabIndex];
Tff7b72try {
Te6edf3const Te6edf3existingPages = Tffa657await Te6edf3this.Te6edf3fetchNodePages(Te6edf3node);
Te6edf3const Te6edf3pageBase = Tffa657await Te6edf3this.Te6edf3resolvePublishPageBase(Te6edf3tab, Te6edf3existingPages, Te6edf3node.Tffa657name);
Tff7b72if (!Te6edf3pageBase) {
Tff7b72return;
}
Te6edf3const Te6edf3publishName = Te6edf3this.Te6edf3pageBaseWithExtension(Te6edf3pageBase, Te6edf3tab);
Te6edf3const Te6edf3response = Tffa657await Te6edf3window.Te6edf3api.Te6edf3post(`/Te6edf3apiTff7b72/Te6edf3v1Tff7b72/Te6edf3page-nodes/${Te6edf3node.Te6edf3node_id}/Te6edf3pages`, {
Te6edf3name: Te6edf3publishName,
Te6edf3content: Te6edf3tab.Te6edf3content,
});
Te6edf3this.Te6edf3showPublishMenu = Te6edf3false;
Te6edf3const Te6edf3savedName = Te6edf3response.Te6edf3data?.Tffa657name || Te6edf3publishName;
Te6edf3DialogUtils.Te6edf3alert(
Te6edf3this.Te6edf3$t(Ta5d6ff"tools.micron_editor.publish_published", { Te6edf3page: Te6edf3savedName, Te6edf3server: Te6edf3node.Tffa657name })
);
} Te6edf3catch (Tffa657e) {
Te6edf3DialogUtils.Te6edf3alert(Tffa657e.Te6edf3response?.Te6edf3data?.Tffa657message || Te6edf3this.Te6edf3$t(Ta5d6ff"tools.micron_editor.publish_failed"));
}
},
Te6edf3async Te6edf3publishAllToNode() {
Tff7b72if (Te6edf3this.Te6edf3pageNodes.Te6edf3length === T79c0ff0) Tff7b72return;

Te6edf3const Te6edf3nodeNames = Te6edf3this.Te6edf3pageNodes.Te6edf3map((Te6edf3n) => Te6edf3n.Tffa657name);
Te6edf3const Te6edf3nodeName = Tffa657await Te6edf3DialogUtils.Tffa657prompt(
Te6edf3this.Te6edf3$t(Ta5d6ff"tools.micron_editor.publish_all_prompt_server", { Te6edf3servers: Te6edf3nodeNames.Tffa657join(Ta5d6ff", ") })
);
Tff7b72if (!Te6edf3nodeName) Tff7b72return;

Te6edf3const Te6edf3node = Te6edf3this.Te6edf3pageNodes.Te6edf3find((Te6edf3n) => Te6edf3n.Tffa657name === Te6edf3nodeName);
Tff7b72if (!Te6edf3node) {
Te6edf3DialogUtils.Te6edf3alert(Te6edf3this.Te6edf3$t(Ta5d6ff"tools.micron_editor.publish_server_not_found", { Te6edf3server: Te6edf3nodeName }));
Tff7b72return;
}

Tff7b72let Te6edf3existingPages = Tffa657await Te6edf3this.Te6edf3fetchNodePages(Te6edf3node);
Tff7b72let Te6edf3published = T79c0ff0;
Tff7b72for (Te6edf3const Te6edf3tab Tffa657of Te6edf3this.Te6edf3tabs) {
Te6edf3const Te6edf3pageBase = Tffa657await Te6edf3this.Te6edf3resolvePublishPageBase(Te6edf3tab, Te6edf3existingPages, Te6edf3node.Tffa657name);
Tff7b72if (!Te6edf3pageBase) {
Te6edf3continue;
}
Te6edf3const Te6edf3publishName = Te6edf3this.Te6edf3pageBaseWithExtension(Te6edf3pageBase, Te6edf3tab);
Tff7b72try {
Te6edf3const Te6edf3response = Tffa657await Te6edf3window.Te6edf3api.Te6edf3post(`/Te6edf3apiTff7b72/Te6edf3v1Tff7b72/Te6edf3page-nodes/${Te6edf3node.Te6edf3node_id}/Te6edf3pages`, {
Te6edf3name: Te6edf3publishName,
Te6edf3content: Te6edf3tab.Te6edf3content,
});
Te6edf3const Te6edf3savedName = Te6edf3response.Te6edf3data?.Tffa657name;
Tff7b72if (Te6edf3savedName) {
Te6edf3existingPages = [...Tffa657new Tffa657Set([...Te6edf3existingPages, Te6edf3savedName])];
}
Te6edf3published++;
} Te6edf3catch {
Te6edf3console.Te6edf3error(`Te6edf3Failed Tffa657to Te6edf3publish Te6edf3tab: ${Te6edf3tab.Tffa657name}`);
}
}
Te6edf3this.Te6edf3showPublishMenu = Te6edf3false;
Te6edf3DialogUtils.Te6edf3alert(
Te6edf3this.Te6edf3$t(Ta5d6ff"tools.micron_editor.publish_all_done", {
Te6edf3published,
Te6edf3total: Te6edf3this.Te6edf3tabs.Te6edf3length,
Te6edf3server: Te6edf3node.Tffa657name,
})
);
},
},
};
Ta5d6ff</script>

Ta5d6ff<style scoped>
.Te6edf3nodeContainer {
Te6edf3font-family: Ta5d6ff"Roboto Mono Nerd Font", Te6edf3ui-monospace, Te6edf3monospace;
Te6edf3line-height: Te6edf3normal;
Te6edf3letter-spacing: Te6edf3normal;
Te6edf3font-variant-ligatures: Tffa657none;
Te6edf3font-feature-settings: Te6edf3normal;
}

:Te6edf3deep(.Te6edf3Mu-nl) {
Te6edf3cursor: Te6edf3pointer;
}
:Te6edf3deep(.Te6edf3Mu-mnt) {
Te6edf3display: Te6edf3inline-block;
Te6edf3box-sizing: Te6edf3border-box;
Tff7b72minTff7b72-Te6edf3width: T79c0ff1Te6edf3ch;
Te6edf3width: T79c0ff1Te6edf3ch;
Tff7b72maxTff7b72-Te6edf3width: T79c0ff1Te6edf3ch;
Te6edf3text-align: Te6edf3center;
Te6edf3white-space: Te6edf3pre;
Te6edf3text-decoration: Te6edf3inherit;
Te6edf3vertical-align: Te6edf3baseline;
Te6edf3line-height: T79c0ff1.25;
}
:Te6edf3deep(.Te6edf3Mu-mnt-full) {
Te6edf3display: Te6edf3inline-block;
Te6edf3box-sizing: Te6edf3border-box;
Tff7b72minTff7b72-Te6edf3width: T79c0ff2Te6edf3ch;
Te6edf3width: T79c0ff2Te6edf3ch;
Tff7b72maxTff7b72-Te6edf3width: T79c0ff2Te6edf3ch;
Te6edf3text-align: Te6edf3center;
Te6edf3white-space: Te6edf3pre;
Te6edf3text-decoration: Te6edf3inherit;
Te6edf3vertical-align: Te6edf3baseline;
Te6edf3line-height: T79c0ff1.25;
}
:Te6edf3deep(.Te6edf3Mu-mws) {
Te6edf3text-decoration: Te6edf3inherit;
Te6edf3display: Te6edf3inline-flex;
Te6edf3flex-wrap: Tffa657wrap;
Te6edf3align-items: Te6edf3baseline;
Te6edf3column-gap: T79c0ff0;
Te6edf3row-gap: T79c0ff0;
Te6edf3gap: T79c0ff0;
}

:Te6edf3deep(Te6edf3a:hover) {
Te6edf3text-decoration: Te6edf3underline;
}
Ta5d6ff</style>

Served by rngit 1.5.2 - Generated in 0.17s